Mongoose save 返回正确的保存对象,但未保存到数据库

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 的这种方法以前对我有用。所以我上面的代码行不通吗?并发?对象大小?

任何帮助都会很棒。谢谢

Ric*_*nho 5

挖掘后,我用以下代码示例发现了这一点

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)

希望这可以帮助其他人在未来