दुर्भाग्य से, यह बहुत अच्छी तरह से प्रलेखित नहीं है (दस्तावेज़.जेएस एपीआई दस्तावेज़ों में इसका कोई उल्लेख नहीं है), लेकिन दस्तावेज़ों के पास constructor
के माध्यम से उनके मॉडल तक पहुंच है। फ़ील्ड - मैं प्लगइन्स से चीजों को लॉग करने के लिए हर समय इसका उपयोग करता हूं, जो मुझे उस मॉडल तक पहुंच प्रदान करता है जिससे वे जुड़े हुए हैं।
module.exports = function readonly(schema, options) {
schema.pre('save', function(next) {
console.log(this.constructor.modelName + " is running the pre-save hook.");
// some other code here ...
next();
});
});
आपकी स्थिति के लिए, आपको यह करने में सक्षम होना चाहिए:
IdeaSchema.pre('save', function(next) {
var idea = this;
function generate_slug(text) {
return text.toLowerCase().replace(/[^\w ]+/g,'').replace(/ +/g,'-').trim();
};
idea.slug = generate_slug(idea.title);
// this now works
this.constructor.findOne({slug: idea.slug}, function(err, doc) {
console.log(err);
console.log(doc);
next(err, doc);
});
//console.log(idea);
});