1

私はこのマングーススキーマを持っています:

var UrlSchema = new mongoose.Schema({
   description: String
});

次に、モデル インスタンスを作成します。

var newUrl = new Url({
  "description": "test"
});

newUrl.save(function (err, doc) {

  if (err) console.log(err);
  else{
      Url.update({_id: doc._id},{description: "a"});
    }
});

しかし、更新が実行されました...なぜですか?ありがとう

4

1 に答える 1

2

update メソッドにコールバックを追加するか、#exec()更新を実行するために呼び出しを行う必要があります。

var newUrl = new Url({
  "description": "test"
});

newUrl.save(function (err, doc) {

  if (err) console.log(err);
  else{

    Url.update({_id: doc._id},{description: "a"}, function (err, numAffected) {
        // numAffected should be 1
    });

    // --OR--
    Url.update({_id: doc._id},{description: "a"}).exec();

  }
});

参考までに:updateとにかくmongooseのようなODMを使用する主な理由であるデフォルト、セッター、ミドルウェア、検証などをバイパスするため、私は個人的に近づきません。updateプライベート データ (ユーザー入力なし) と自動インクリメント値を扱う場合にのみ使用します。私は次のように書き直します:

var newUrl = new URL({
  "description": "test"
});

newUrl.save(function(err, doc, numAffected) {
  if (err) console.log(err);
  else {
    doc.set('description', 'a');
    doc.save();
  }
});
于 2013-10-14T12:22:16.857 に答える