आप this
. से वंचित हैं संदर्भ यहाँ,
.pre('save', function(next) {
Project.findOne({_id: this.project}).select('numberSeq').exec(function(err, doc) {
if (err) {
console.log(err);
}
console.log('pre-save hook firing');
this.number = doc.numberSeq;
console.log(this.number);
next();
});
})
आप कहाँ कहते हैं:
this.number = doc.numberSeq;
console.log(this.number);
वास्तव में findOne क्वेरी के कॉलबैक फ़ंक्शन को संदर्भित करता है, इस प्रकार आप सही कंसोल के साथ समाप्त हो रहे हैं। लॉग और गलत डेटा डाला गया है।
आप प्री सेव हुक के इस संदर्भ को याद रख सकते हैं, और बाद में कॉलबैक के अंदर उस संदर्भ का उपयोग करके नंबर को अपडेट कर सकते हैं। नीचे की तरह:
.pre('save', function(next) {
var tat=this;
Project.findOne({_id: this.project}).select('numberSeq').exec(function(err, doc) {
if (err) {
console.log(err);
}
console.log('pre-save hook firing');
tat.number = doc.numberSeq;
console.log(tat.number);
next();
});
})