使用 Mongoose 时的 MongoDB 弃用警告
Posted
技术标签:
【中文标题】使用 Mongoose 时的 MongoDB 弃用警告【英文标题】:MongoDB deprecation warnings when using Mongoose 【发布时间】: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 帖子中提出的:***.com/questions/51916630/…。
我宁愿尝试第一个答案的建议。 Mongodb 本身并没有在他们的查找和修改文档中提到任何此类内容。
你试过设置mongoose.set('useFindAndModify', false);
吗?
@Veeram,这行得通,谢谢。我只是希望有一个更通用的解决方案,而不必在每个 mongoose 实例上显式设置参数。但是,如果没有其他选择,您能否将其发布为答案,以便我接受并关闭?
【参考方案1】:
参考:https://mongoosejs.com/docs/deprecations.html
添加参数:useFindAndModify: false
例如代码:
mongoose.connect(
MONGODB_URL,
useFindAndModify: false
,
(err, db) =>
if (err) throw err;
console.log(`MongoDB connected on port $MONGODB_PORT`);
);
【讨论】:
【参考方案2】:我认为要避免此警告,您必须将useFindAndModify: false
添加到Mongoose documentation 中提到的连接选项中
如下:
mongoose.connect(uri, useFindAndModify: false );
另外,您可以将其升级到(v5.12.15);这是最新版本;除了使用前面提到的连接选项
【讨论】:
以上是关于使用 Mongoose 时的 MongoDB 弃用警告的主要内容,如果未能解决你的问题,请参考以下文章
UnhandledPromiseRejectionWarning:|弃用警告:|猫鼬5