【问题标题】:MongooseJS - update (not working), findByIdAndUpdate (working) - why?MongooseJS - 更新(不工作),findByIdAndUpdate(工作) - 为什么?
【发布时间】:2014-02-13 07:48:20
【问题描述】:

使用 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

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

真的让我摸不着头脑!

【问题讨论】:

  • 你说它不起作用是什么意思?什么都没发生?它设置了错误的值?你看到了什么行为?
  • 您应该检查回调的第一个参数是否有错误并包含该信息。
  • 嘿伙计们[抱歉回复晚了,没有电子邮件通知!] --- @juanpaco:来自 .exec(错误,对象)的两个参数在 console.log 上都是空的——我已经仔细检查了身份证是正确的。它以 findByIdAndUpdate 格式工作。似乎查询结构有问题,无法正常工作。虽然无法弄清楚它是什么......
  • 我相信.exec 仅适用于具有查询条件的模型,即使用查找方法而不是更新或创建。

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


【解决方案1】:

这可能是由于 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);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 2021-08-26
    • 2018-02-23
    • 2013-07-01
    • 2017-07-28
    相关资源
    最近更新 更多