Mongoose 4.x“model.update()”回调改变
Posted
技术标签:
【中文标题】Mongoose 4.x“model.update()”回调改变【英文标题】:Mongoose 4.x "model.update()" callback changed 【发布时间】: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 是否安全?
【问题讨论】:
【参考方案1】:是的,它们是一样的。根据4.0 release notes:
#2552: 将 mongodb 驱动升级到 2.0.x。 Mongoose 是 MongoDB 节点驱动程序之上的包装层。最近的mongodb驱动 发布了 2.0 版,其中包括许多性能和 可用性改进。但是,新驱动程序引入了一些 影响您使用 Mongoose 方式的更改:
如果您正在连接到 一个副本集,您必须在 连接字符串。update
从 MongoDB 返回一个结果对象 服务器,而不仅仅是受影响的数量。第二个参数为 回调现在看起来像ok: 1, n: 3
而不是简单的 受影响的人数。
【讨论】:
以上是关于Mongoose 4.x“model.update()”回调改变的主要内容,如果未能解决你的问题,请参考以下文章
mongoose Model.update() - 只更新提供的值