Mongoose save保存返回正确保存的对象,但不保存到DB

时间:2016-11-08 21:49:11

标签: javascript node.js mongodb mongoose

我正在做一个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之前曾为我工作过。所以我的上述代码不起作用吗?并发?对象大小?

任何帮助都会很棒。感谢

1 个答案:

答案 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');

希望这有助于将来的其他人