Vous manquez le this
contexte ici,
.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();
});
})
où vous dites :
this.number = doc.numberSeq;
console.log(this.number);
fait en fait référence à la fonction de rappel de la requête findOne, vous vous retrouvez donc avec le bon fichier console.log et de mauvaises données insérées.
vous pouvez vous souvenir de ce contexte du crochet de pré-sauvegarde et mettre à jour ultérieurement le numéro en utilisant ce contexte dans le rappel. comme ci-dessous :
.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();
});
})