文件保存功能无法在mongoose中工作

时间:2014-12-31 11:19:02

标签: node.js mongodb express mongoose meanjs

我正在更新文档" 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被更改但更新的文档未保存在数据库中。以下是调试屏幕。

enter image description here

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

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

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

1 个答案:

答案 0 :(得分:1)

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

order.attempt_status = attempt.attempt_status;