猫鼬:在预保存挂钩中更新文档

时间:2020-02-25 12:27:33

标签: node.js mongoose

我是nodeJS的新手,有一些我无法解决的问题...

我想在猫鼬的pre save钩子中更新相关文档: 没有错误,但结果总是出现:
更新:{“ n”:1,“ nModified”:0,“ ok”:1} 所以文档永远不会更新....我该如何解决?我知道我之前可以进行所有控制,但是预钩似乎是个好地方。 谢谢您的帮助...

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var suivilotSchema = new Schema({
code_lot:             { type: String,Required:  'Code Lot cannot be left blank.' },
site_IMS:             { type: String,Required:  'Site IMS cannot be left blank'},
date_plantws:         { type: String,Required:  'tws plan prod cannot be left blank'},
nb_server:            { type: Number,Required:  'nb Server cannot be left blank.',default: 1},
nb_server_done:       { type: Number,Required:  'nb Server done cannot be left blank.',default: 0},
date_created:         { type: Date,default: Date.now },
date_updated:         { type: Date },
retry:                { type: Number },
status:               { type: Number}
});

suivilotSchema.pre('save', function (next) {
console.log('***** PRE HOOK suivilot *******');
var self = this;

this.constructor.findOne({'code_lot' : self.code_lot,'date_plantws' : self.date_plantws, 'retry' : 
self.retry },function (err,existinglot) {
    if (!existinglot){
        console.log('SUIVILOTS : pas de resultat');
        next();
    }
    else{
        console.log('SUIVILOTS : lot exists: ',existinglot._id);

        existinglot.updateOne({ '_id' : existinglot._id  }, { $inc:{'nb_server' : 1} 
},function(err,updated){
        if(err)
            console.log("Error during increment server :"+err);
            console.log('updated:'+JSON.stringify(updated));
            console.log('updated:'+JSON.stringify(existinglot));
        });
      }
});
});

0 个答案:

没有答案