MongooseJS - 更新(不工作),findByIdAndUpdate(工作) - 为什么?

时间:2014-01-23 00:02:17

标签: node.js mongodb express mongoose mean-stack

使用Mongoose JS,并尝试更新MongoDB数据存储区中的字段;我很难理解为什么会这样:

MyModel
    .findByIdAndUpdate( req.params.id, field: someValue )
    .exec () -> 
         ...callback

但以下有效吗?即使用find / where + update。

MyModel
    .findOne( _id: req.params.id )
    .update( field: someValue )
    .exec () ->
         ...callback

OR

MyModel
    .where( _id: req.params.id )
    .update( field: someValue )
    .exec () ->
         ...callback

真让我挠挠脑袋!

1 个答案:

答案 0 :(得分:0)

这可能是由于mongoose findOne()返回文档但你无法操作它需要在javascript对象中转换它然后将它传递给更新函数。

但您可以使用以下方法更新文档

你也可以参考mongoose文档。

http://mongoosejs.com/docs/api.html#model_Model.findByIdAndUpdate

Model.findById(id, function (err, doc) {
   if (err) { return err;}
  doc.name = 'jason bourne';
  doc.save(callback);
});