0

私はマングース.findクエリの後にこれを行います:

data2[0].videos[temp].markModified('fakeName');
data2[0].save(function(err,product,numberAffected){
    if(err){
        console.log("error saving manifest")
        console.log(err);
        var back={success:false, reason:err};
        callback(back);
        return;
    }
    if(numberAffected>=1){
        console.log("manifest saved",product.videos[temp]);
        var back={success:true};
        callback(back);
        return;
    }else{
        console.log("nothing saved");
        callback({success:false});
        return;
    }
});

これを印刷する:

  manifest saved { fakeName: 'devrenameTest',
  name: 'bkdyZVb--',
  version: 1,
  dateCreated: 1406846165732,
  dateUpdated: 1406846165732,
  vidLoc: '[url removed]',
  thumbLoc: '[url removed]',
  author: '53a47a469c52c9d83a2d71d9',
  _id: 53dac4d533c061dd0b000007,
  sharedWithGroups: [],
  sharedWith: [],
  tags: [] }

それで、それは正しく機能したように見えますか?

しかし、自分のデータベースを見ると、videos1 つのフィールドだけで構成されたの中にサブドキュメントがfakeNameあり、変更していたオブジェクトにはfakeNameフィールドがありません。

どうしたの?

そこの最初の行を次のように変更しました

data2[0].markModified('videos');

そして、それはそれを修正するように見えました。

何が起こっているのかの説明に基づいて、私はまだ答えを受け入れます。

4

1 に答える 1