猫鼬 4.x "model.update()"回调更改



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

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

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

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

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

是的,它们是一回事。根据 4.0 发行说明:

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

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

最新更新