MongoDB 弃用警告

问题描述

因为我对 (MERN) 技术非常陌生。这个警告让我困扰了一段时间 (DeprecationWarning: Mongoose: findOneAndUpdate()findOneAndDelete() 没有将 useFindAndModify 选项设置为 false 已弃用。) 而且我也没有在这功能上使用任何东西。

router.delete('/:id',(req,res)=> {
    Category.findByIdAndRemove(req.params.id).then(category => {
        if(category){
            return res.status(200).json({success: true,message: ' The category is deleted...'})
        } else {
            return res.status(404).json({success: false,message: " Category not found..."})
        }
    }).catch(err=>{
        return res.status(404).json({success: false,error: err})
    })
})

当我在邮递员上使用删除方法时出现警告...

解决方法

如果您使用 Model.findOneAndUpdate(),默认情况下您会看到以下弃用警告之一[...] 此选项影响以下模型和查询功能。 模型.findByIdAndDelete() Model.findByIdAndRemove() Model.findByIdAndUpdate() 模型.findOneAndDelete() 模型.findOneAndRemove() 模型.findOneAndUpdate() Query.findOneAndDelete() Query.findOneAndRemove() Query.findOneAndUpdate()

大多数情况下,一些 mongoose 命令只是 MongoDB 命令的别名。

解决方法很简单,你必须将选项传递给猫鼬连接:

- The package javax.xml is accessible from more than one module: <unnamed>,java.xmlJava(8390063)
- The package javax.xml.transform.stream is accessible from more than one module: <unnamed>,java.xmlJava(8390063)
- The package javax.xml.validation is accessible from more than one module: <unnamed>,java.xmlJava(8390063)

或者设置在:

mongoose.connect(uri,{ useFindAndModify: false });

更多信息位于:https://mongoosejs.com/docs/deprecations.html (findAndModify())

,

只需添加mongoose.set('useFindAndModify',false);