-1

我正在使用以下代码将文档“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();
    });
  });
});

当我调试它时,看到尝试状态发生了变化,但更新的文档没有保存在数据库中。以下是调试屏幕。

在此处输入图像描述

如果图像可见,请单击http://i.stack.imgur.com/ByCPT.png 。控制台打印是

{
  "_id": "54a26634a4800130eb95be19",
  "attempt_status": "open",
  ....
  ....
}

{
  "_id": "54a26634a4800130eb95be19",
  "attempt_status": "closed",
  ....
  ....
}
4

1 回答 1

1

不要_doc直接修改私有对象,分配模型实例的顶级属性,以便 Mongoose 可以跟踪更改并在调用时应用它们save

order.attempt_status = attempt.attempt_status;
于 2014-12-31T15:24:43.950 回答