मेरा मानना है कि यह प्रश्न this one जैसा है लेकिन शब्दावली अलग है। मोंगोस 4 documentation से:मोंगोस 'स्थैतिक' विधियों बनाम 'उदाहरण' विधियों
हम भी अपने स्वयं के कस्टम दस्तावेज़ उदाहरण विधियों को परिभाषित कर सकते हैं।
// define a schema
var animalSchema = new Schema({ name: String, type: String });
// assign a function to the "methods" object of our animalSchema
animalSchema.methods.findSimilarTypes = function (cb) {
return this.model('Animal').find({ type: this.type }, cb);
}
अब हमारे पशु उदाहरणों के सभी एक findSimilarTypes विधि इसे करने के लिए उपलब्ध है।
और फिर:
एक मॉडल के लिए स्थिर विधियां जोड़ने के रूप में अच्छी तरह से सरल है। हमारे animalSchema के साथ सतत:
// assign a function to the "statics" object of our animalSchema
animalSchema.statics.findByName = function (name, cb) {
return this.find({ name: new RegExp(name, 'i') }, cb);
}
var Animal = mongoose.model('Animal', animalSchema);
Animal.findByName('fido', function (err, animals) {
console.log(animals);
});
यह स्थिर तरीकों के साथ लगता है पशु उदाहरणों में से प्रत्येक findByName
विधि यह करने के लिए उपलब्ध के साथ-साथ होगा। स्कीमा में statics
और methods
ऑब्जेक्ट्स क्या हैं? अंतर क्या है और मैं दूसरे पर एक का उपयोग क्यों करूं?
तो केवल उपयोग अंतर आप मॉडल या दस्तावेज़ विधि कॉल करने के लिए उपयोग है कि क्या है करना है? – Startec
आप 'Animals.findSimilarTypes' का उपयोग नहीं कर सकते क्योंकि 'पशु' एक मॉडल है, इसमें कोई "प्रकार" नहीं है। 'findSimilarTypes' को 'this.type' की आवश्यकता होती है जो 'पशु' मॉडल में मौजूद नहीं होगी, मॉडल में परिभाषित अनुसार केवल एक दस्तावेज़ उदाहरण में उस संपत्ति को शामिल किया जाएगा। – laggingreflex
इसी प्रकार आप 'fido.findByName' नहीं कर सकते हैं क्योंकि' findByName' को *** *** *** **** *** ***** ************************************************************************** – laggingreflex