我在MongoDB中使用nodejs的expressjs框架。 当我运行查询时,我遇到了这个问题:-
(node:29411) DeprecationWarning: collection.findAndModify is deprecated. Use findOneAndUpdate, findOneAndReplace or findOneAndDelete instead.
我正在使用 MongoDB 4.0 版本。
还有我正在执行的查询
User
.findByIdAndUpdate(item._id, {name: "Test name"}, function (err, user) {
if (err || !user) {
return res.status(401).json({ errors: "Invalid User." });
}
return res.render('view', {
error: error,
info: info,
message: message,
item: user
});
});
任何帮助将不胜感激。
预先感谢
答案 0 :(得分:0)
弃用警告是MongoDB Node.js驱动程序中的更改导致的。猫鼬为解决这些问题提供了选择。
根据Mongoose API docs,关于collection.findAndModify函数的弃用警告,由于Mongoose findOneAndUpdate()早于MongoDB驱动程序的findOneAndUpdate(),因此Mongoose默认使用MongoDB驱动程序的findAndModify()。 findAndModify()现在已被弃用,这就是为什么您收到警告的原因。
通过将useFindAndModify()全局函数设置为false,可以将Mongoose设置为使用MongoDB驱动程序的findOneAndUpdate()函数。默认情况下是这样。
执行以下操作:
mongoose.set('useFindAndModify', false)
这将解决它。您应该知道,您也可以通过猫鼬连接选项来传递它。