我正在做一个findOne,然后是一个保存。这是为了覆盖以前保存的对象。
问题是在我的回调中保存res.json()之后返回正确更新的数据(也就是通过my for循环修改的myObject)。但是"保存"似乎实际上并没有发生,因为数据库仍然显示myObject处于旧状态。
var pathList = [{id:'x',url:'#'}];
MyObjects.findOne({'_id': _id}, function(err, myObject) {
//
for ( var i in myObject.body.module ) {
for (var j = 0; j < pathList.length; j++ ) {
var id = pathList[j].id;
myObject.body.module[i].channel[id].buffer = {
url:pathList[j].url
};
}
}
//
myObject.save(function(err, data) {
if (err){
res.json({'response':'Error in saving track: '+err});
throw err;
}
res.json({
'response': 'done',
'data': data
});
});
});
findOne的这种方法&gt; save之前曾为我工作过。所以我的上述代码不起作用吗?并发?对象大小?
任何帮助都会很棒。感谢
答案 0 :(得分:4)
挖掘后,我发现了this以下代码示例:
Assignment.findOne(function (err, doc) {
doc.dueDate.setMonth(3);
doc.save(callback); // THIS DOES NOT SAVE YOUR CHANGE
doc.markModified('dueDate');
doc.save(callback); // works
})
所以我进行了测试,并在我的数据库中更新了对象
myObject.markModified('body');
希望这有助于将来的其他人