mongoose
mongoose पूर्व और पोस्ट मिडलवेयर (हुक)
खोज…
मध्यस्थ
मिडलवेयर (जिसे प्री और पोस्ट हुक भी कहा जाता है) फ़ंक्शंस हैं जो एसिंक्रोनस फ़ंक्शंस के निष्पादन के दौरान नियंत्रण से पारित किए जाते हैं। मिडलवेयर स्कीमा स्तर पर निर्दिष्ट किया गया है और प्लगइन्स लिखने के लिए उपयोगी है। Mongoose 4.0 में 2 प्रकार के मिडलवेयर हैं: दस्तावेज़ मिडलवेयर और क्वेरी मिडलवेयर। दस्तावेज़ मिडलवेयर निम्नलिखित दस्तावेज़ कार्यों के लिए समर्थित है।
- इस में
- सत्यापित करें
- सहेजें
- हटाना
निम्न मॉडल और क्वेरी फ़ंक्शन के लिए क्वेरी मिडिलवेयर समर्थित है।
- गिनती
- खोज
- ढूँढो एक
- findOneAndRemove
- findOneAndUpdate
- अपडेट करें
दस्तावेज़ मिडलवेयर और क्वेरी मिडलवेयर प्री और पोस्ट हुक का समर्थन करते हैं।
पूर्व
दो प्रकार के पूर्व हुक, धारावाहिक और समानांतर हैं।
धारावाहिक
सीरियल मिडलवेयर को एक के बाद एक निष्पादित किया जाता है, जब प्रत्येक मिडलवेयर अगले कॉल करता है।
var schema = new Schema(..);
schema.pre('save', function(next) {
// do stuff
next();
});
समानांतर
समानांतर मिडलवेयर अधिक महीन दाने वाले प्रवाह नियंत्रण की पेशकश करता है।
var स्कीमा = नई स्कीमा (..);
// `true` means this is a parallel middleware. You **must** specify `true`
// as the second parameter if you want to use parallel middleware.
schema.pre('save', true, function(next, done) {
// calling next kicks off the next middleware in parallel
next();
setTimeout(done, 100);
});
हुक किए गए तरीके, इस मामले में बचाओ, तब तक निष्पादित नहीं किया जाएगा जब तक कि प्रत्येक मिडलवेयर द्वारा कॉल न किया जाए।
मिडिलवेयर पोस्ट करें
पोस्ट मिडिलवेयर को हुक किए गए तरीके के बाद निष्पादित किया जाता है और इसके सभी पूर्व मिडलवेयर ने पूरा कर लिया है। पोस्ट मिडलवेयर सीधे फ्लो कंट्रोल प्राप्त नहीं करता है, जैसे कि कोई अगला या किया गया कॉलबैक इसे पास नहीं किया जाता है। पोस्ट हुक इन तरीकों के लिए पारंपरिक ईवेंट श्रोताओं को पंजीकृत करने का एक तरीका है।
schema.post('init', function(doc) {
console.log('%s has been initialized from the db', doc._id);
});
schema.post('validate', function(doc) {
console.log('%s has been validated (but not saved yet)', doc._id);
});
schema.post('save', function(doc) {
console.log('%s has been saved', doc._id);
});
schema.post('remove', function(doc) {
console.log('%s has been removed', doc._id);
});