我在猫鼬.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: [] }
所以它似乎工作对了吗?
但是,如果我查看我的数据库,我会看到其中的子文档videos
仅由一个fakeName
字段组成,而我正在修改的对象没有fakeName
字段。
这是怎么回事?
我将那里的第一行改为
data2[0].markModified('videos');
这似乎解决了它。
我仍然会根据对正在发生的事情的解释接受答案。