【问题标题】:Mongoose 4.x "model.update()" callback changedMongoose 4.x“model.update()”回调改变
【发布时间】:2015-07-29 10:26:58
【问题描述】:

在 mongoose 4.x 之前,在 update() 中,您可以检查回调中的第二个参数,以查看是否找到了文档。在下面的示例中,您可以使用“rowAffected”查看是否存在用户名为 john 的文档。

model.update({ username: "john" }, { ... }, function(err, rowAffected){ 
    if (rowAffected) // document found

但现在从 mongoose 4.x 开始,回调中的第二个参数成为 MongoDB 更新操作的原始输出。所以要查找文档是否存在,我必须做 raw.n

model.update({ username: "john" }, { ... }, function(err, raw){ 
    if (raw.n) // document found

我的问题是“rowAffected”和“raw.n”是一回事?如果是这样,从 3.x 迁移到 4.x 时替换所有受 raw.n 影响的 rowAffected 是否安全?

【问题讨论】:

    标签: javascript node.js mongodb callback mongoose


    【解决方案1】:

    是的,它们是一样的。根据4.0 release notes

    #2552: 将 mongodb 驱动升级到 2.0.x。 Mongoose 是 MongoDB 节点驱动程序之上的包装层。最近的mongodb驱动 发布了 2.0 版,其中包括许多性能和 可用性改进。但是,新驱动程序引入了一些 影响您使用 Mongoose 方式的更改:

    • 如果您正在连接到 一个副本集,您必须在 连接字符串。
    • update 从 MongoDB 返回一个结果对象 服务器,而不仅仅是受影响的数量。第二个参数为 回调现在看起来像 { ok: 1, n: 3 } 而不是简单的 受影响的人数。

    【讨论】:

      猜你喜欢
      • 2016-12-15
      • 1970-01-01
      • 2017-03-20
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-11
      • 2019-02-13
      相关资源
      最近更新 更多