📅  最后修改于: 2023-12-03 15:30:26.348000             🧑  作者: Mango
最新版本的Mongoose中,使用findOneAndUpdate()和findOneAndDelete()方法时,将会收到DeprecationWarning警告。警告内容提示,不推荐使用未将 useFindAndModify
选项设置为 false 的这两个方法,建议使用替代方案。详细内容可以参考官方文档。
Mongoose是一个Node.js中对象模型(ODM)库,用于在优雅的Node.js对象模型中操作MongoDB数据库。该库帮助开发者用简单的JavaScript代码定义Schema(文档模型),并通过API支持CRUD操作,使得操作MongoDB数据库变得容易。
根据官方文档提供的方案,可以通过设置useFindAndModify
选项为false
来禁用警告信息。该选项默认为true
,如果不修改该选项,则使用findOneAndUpdate()和findOneAndDelete()方法时将会收到DeprecationWarning警告信息。
以下是示例代码,展示如何设置useFindAndModify
选项:
mongoose.set('useFindAndModify', false);
Mongoose官方推荐使用以下方法来替代findOneAndUpdate()和findOneAndDelete()方法:
findOneAndUpdate()
findById()
查询,然后对返回的model执行修改操作const doc = await Model.findById(id);
doc.field = newValue;
await doc.save();
const doc = await Model.updateOne({ _id: id }, { field: newValue });
findOneAndDelete()
findById()
查询,然后对返回的model执行删除操作const doc = await Model.findById(id);
await doc.remove();
const doc = await Model.deleteOne({ _id: id });
本文简单介绍了Mongoose库中,使用findOneAndUpdate()和findOneAndDelete()方法时,会收到DeprecationWarning警告信息的问题,以及如何解决和替代方法。如果您使用了这两个方法,强烈建议您遵循官方推荐,修改代码,避免出现问题。