2012-08-31 12 views
13

यह Mongoose docs में सुझाया गया है कि मुझे "init" हुक में प्लग करने वाले मिडलवेयर का उपयोग करके प्रवाह को नियंत्रित करने में सक्षम होना चाहिए।मोंगोस - स्कीमा मिडलवेयर को 'init' ईवेंट में कैसे टैप करें?

हालांकि, मुझे अभी तक केवल "सहेजने" और "मान्य" के साथ सफलता मिली है।

जब मैं कुछ इस तरह करते हैं, कभी कहा जाता हो इन मिडलवेयर के न:

MySchema.post("init", function (next) { console.log("post init") }); 
MySchema.pre("init", function (next) { console.log("pre init") }); 

मैं कुछ याद आ रही है?

उत्तर

22

यह पता चला है कि एक नया मॉडल बनाते समय "init" ईवेंट/हुक नहीं निकाल दिया जाता है, डेटाबेस से मौजूदा मॉडल लोड करते समय इसे केवल निकाल दिया जाता है। ऐसा लगता है कि मुझे इसके बजाय पूर्व/मान्य हुक का उपयोग करना चाहिए।

+0

क्या यह अभी भी सच है? मुझे उम्मीद है कि शुरुआती सृजन के बाद बुलाया गया मेरा पोस्ट इनिट प्राप्त हो रहा है। –

2

मैंने मोंगोस के साथ MySchema.post('init', function() { ... }); जैसे मिडलवेयर का सफलतापूर्वक उपयोग किया है जिसे find क्वेरी में लोड किए गए प्रत्येक मॉडल उदाहरण के लिए निष्पादित किया जाता है। ध्यान दें कि इस मिडलवेयर के साथ कॉल करने के लिए next पैरामीटर नहीं है, इसे पूरा होने पर ही वापस लौटना चाहिए।

संबंधित मुद्दे