MongoDB的NodeJS问题:DeprecationWarning:不推荐使用collection.findAndModify

时间:2018-12-08 16:29:08

标签: node.js mongodb express

我在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
    });

});

任何帮助将不胜感激。

预先感谢

1 个答案:

答案 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)

这将解决它。您应该知道,您也可以通过猫鼬连接选项来传递它。