/**
* Issues a mongodb findAndModify update command.
* Finds a matching document, updates it according to the update arg,
passing any options,
* and returns the found document (if any) to the callback. The query
executes immediately
* if callback is passed else a Query object is returned.
*/
findOneAndUpdate(): DocumentQuery<T | null, T>;
// Make Mongoose use `findOneAndUpdate()`. Note that this option is `true`
// by default, you need to set it to false.
mongoose.set('useFindAndModify', false);
9条答案
按热度按时间xtfmy6hx1#
您需要将查询
useFindAndModify
中的选项设置为false
,如docs中所述。(搜索关键字当前支持的选项为)
'使用查找和修改':默认情况下为true。设置为false可使findOneAndUpdate()和findOneAndRemove()使用本机findOneAndUpdate(),而不是findAndModify()。
如果您看到mongoose的定义文件,其中提到它调用findAndModify update命令。
最近在mongoose文档(单击此处)中更新了以下提到的不赞成使用的内容:
Mongoose的findOneAndUpdate()函数早于MongoDB驱动程序的findOneAndUpdate()函数,因此它使用MongoDB驱动程序的findAndModify()函数来代替。
有三种或更多的方法可以避免使用
FindAndModify
:1.在全球层面:将该选项设置为false。
1.在连接级别:我们可以使用连接选项进行配置:
1.在查询层:
sf6xfgos2#
全局更改mongoose配置,如下所示:
或者在查询字符串中传递如下选项:
您还可以管理其他mongoose过时警告,如docs所述
就这样了。
8nuwlpux3#
您也可以在连接处使用requirement选项
useNewUrlParser
来传递选项。1tuwyuhd4#
您必须更改连接方法选项以消除该错误:
你可以这样使用它。
f45qwnt85#
Mongoose版本更新如此之多,
对于使用
Model.findByIdAndUpdate()
,它需要一个选项参数,也请参见下文为了解决这个问题
在mongoose中传递此
useFindAndModify: false
。或
单击此处查看相关的弃用版本
at0kjp5o6#
这些解决方案对我很有效!
92vpleto7#
跳过所有错误:-)将其添加到index.js或任何您命名的文件中。我指的是主js文件。- )
rdrgkggo8#
要修复所有过时警告,请执行以下步骤:
将update()替换为updateOne()、updateMany()或replaceOne()将remove()替换为deleteOne()或deleteMany()。将count()替换为countDocuments(),除非您要计算整个集合中的文档数(无筛选器)。在后一种情况下,请使用estimatedDocumentCount()。
9cbw7uwe9#
将package.json中的mongoose版本更改为5X(降级)并运行npm i以reiantall,然后运行npm start。这将解决此问题。