【问题标题】:Mongoose update individual modelMongoose 更新单个模型
【发布时间】:2015-10-07 16:29:18
【问题描述】:

mongoose 文档清楚地展示了如何在给定模型类的情况下更新模型,如下所示:

Tank.update({ _id: id }, { $set: { size: 'large' }}, callback);

如果我们确实需要应用程序中返回的文档,还有另一个通常更好的选择:

Tank.findByIdAndUpdate(id, { $set: { size: 'large' }}, function (err, tank) {
  if (err) return handleError(err);
  res.send(tank);
});

但我找不到更新我手头已有模型的语法,类似于:

tank.update({ $set: { size: 'large' }}, callback);

这存在吗?

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    支持您问题中的以下示例:

    tank.update({ $set: { size: 'large' }}, callback);
    

    update 风格的文档是 here,因为它是基础 Document 的一部分,而不是 Model 本身。

    但是,请记住,您调用它的 tank 对象不会更新,只会更新数据库中的实际文档。

    【讨论】:

    • 我想知道为什么当你不把 $set 操作符放在那里时 mongoose/mongo 不会呕吐。如果我传入一个 sight 对象作为第一个参数,它不会返回错误,它可能应该
    • @AlexMills 这实际上是定义的行为。对于update,请参阅the docs 中的注释。
    【解决方案2】:

    就是.save():

    tank.size = "large"
    tank.save(callback)
    

    你的回调有三个参数:error, savedTank, count:

    Here it is in the docs.

    数组可能会稍微复杂一些,但有很多问题可以解决。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 2011-06-28
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 2020-08-26
    相关资源
    最近更新 更多