Ric*_*nho 2 javascript mongoose mongodb node.js
我正在做一个 findOne,然后是一个保存。这是为了覆盖以前保存的对象。
问题是在我的回调中保存 res.json() 后返回正确更新的数据(也就是通过我的 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
});
});
});
Run Code Online (Sandbox Code Playgroud)
findOne > save 的这种方法以前对我有用。所以我上面的代码行不通吗?并发?对象大小?
任何帮助都会很棒。谢谢
挖掘后,我用以下代码示例发现了这一点:
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
})
Run Code Online (Sandbox Code Playgroud)
所以我当然进行了测试,并且对象在我的数据库中更新
myObject.markModified('body');
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助其他人在未来