-1

次のコードを使用して、ドキュメント「Order.attempt_status」を「open」から「closed」に更新しています

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",
  ....
  ....
}
4

1 に答える 1

1

プライベート オブジェクトを直接変更しないでください_doc。モデル インスタンスの最上位プロパティを割り当てて、Mongoose が変更を追跡し、呼び出し時にそれらを適用できるようにしますsave

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