【发布时间】:2019-02-21 00:56:27
【问题描述】:
我使用的是猫鼬版本 5.2.13,我想是最新的。但是当我尝试执行 .findOneAndUpdate() 查询时,Mongo 会抛出一个弃用警告:
DeprecationWarning:collection.findAndModify 已弃用。采用 findOneAndUpdate、findOneAndReplace 或 findOneAndDelete。
这种已知行为是否应该在未来版本的 mongoose 中修复?或者我应该对此做些什么?我正在运行的查询是:
output2 = await dbUser.findOneAndUpdate(
{ _id: args.authorid },
{ $push: { posts: newpost2 } },
);
如果MongoDB mongoose collection.find options Deprecation Warning 提供了可能的建议,我不太愿意降级我的软件包。
【问题讨论】:
-
为什么会降级你的模块。如果正在使用
findAndModify,请阅读它所说的警告,然后确保它已被弃用。如果您不使用,请忽略它。 -
弃用警告没有说“如果”
findAndModify正在使用,我想只有在确实调用了违规方法时,MongoDB 才会抛出警告。降级的想法是在类似的 SO 帖子中提出的:stackoverflow.com/questions/51916630/…。 -
我宁愿尝试第一个答案的建议。 Mongodb 本身并没有在他们的查找和修改文档中提到任何此类内容。
-
你试过设置
mongoose.set('useFindAndModify', false);吗? -
@Veeram,这行得通,谢谢。我只是希望有一个更通用的解决方案,而不必在每个 mongoose 实例上显式设置参数。但是,如果没有其他选择,您能否将其发布为答案,以便我接受并关闭?