以下代码生成控制台消息:
消息:
( Node :5700)DeprecationWarning:Mongoose:不推荐将 useFindAndModify
选项设置为 false 的 findOneAndUpdate()
和 findOneAndDelete()
。请参阅:https://mongoosejs.com/docs/deprecations.html#-findandmodify-
代码:
app.post("/delete", (req, res) =>{
const checkedItemId = req.body.checkbox;
Item.findByIdAndRemove(checkedItemId, (err) =>{
if (!err) {
console.log("Success!");
} else {
console.log("err");
}
});
res.redirect("/");
});
我知道这与折旧和后台使用的方法有关,但我对如何处理它感到困惑。它不会破坏应用程序,但我仍然想了解为什么会发生这种情况**。
我尝试了 Mongoose 文档,但我仍然很困惑。感谢任何和所有的帮助。
https://mongoosejs.com/docs/deprecations.html
findAndModify 下的部分是我在文档中发现相关的部分
我不想收到该消息。是否有一个选项应该被通过?
最佳答案
摆脱弃用:
mongoose.set('useNewUrlParser', true);
mongoose.set('useFindAndModify', false);
mongoose.set('useCreateIndex', true);
mongoose.set('useUnifiedTopology', true);
并修复代码,不再有 findAndModify
风格的方法 - 这是正确的,因为如果你想删除 - 所以 deleteOne
, deleteMany
。
当您不关心它是否存在时,我看不出进行查找和删除的原因。
关于弃用请阅读 SUMMARY here
app.post("/delete", async (req, res) =>{
try {
const checkedItemId = req.body.checkbox;
await Item.deleteOne({_id: checkedItemId});
}
catch (error) {
console.error(error);
}
finally {
res.redirect("/");
}
});
关于javascript - findByIdAndRemove() 废弃消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60733166/