我正在更新文档" Order.attempt_status"来自"开放"到"关闭"使用以下代码
AttemptSchema.pre('save', function (next) {
var attempt = this;
Order.findById(this.order).exec(function(err, order){
if(err) next(err);
if(!order) next(new Error('could not load order with order_id:' + this.order));
console.log(JSON.stringify(order));
order._doc.attempt_status = attempt.attempt_status;
console.log(JSON.stringify(order));
order.save(function(err){
if(err) next(err);
else next();
});
});
});
当我调试它时,看到attempt_status被更改但更新的文档未保存在数据库中。以下是调试屏幕。
如果图片可见,请点击http://i.stack.imgur.com/ByCPT.png。控制台打印是
{
"_id": "54a26634a4800130eb95be19",
"attempt_status": "open",
....
....
}
{
"_id": "54a26634a4800130eb95be19",
"attempt_status": "closed",
....
....
}
答案 0 :(得分:1)
不要直接修改私有_doc
对象,指定模型实例的顶级属性,以便Mongoose可以跟踪更改并在您调用save
时应用它们。
order.attempt_status = attempt.attempt_status;