javascript - findByIdAndRemove() 废弃消息

标签 javascript node.js mongodb mongoose

以下代码生成控制台消息:

消息:
( 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/

相关文章:

javascript - jQuery 无法获取任何 div css 属性?

javascript - 函数式编程中的nodejs createReadStream

node.js - 我们可以使用无服务器离线插件运行多个 yml 文件吗

mongodb - Mongodb - 独立副本集和单节点副本集的区别

mongodb - 无法从 Mongo 记录 [mgo] :golang 的结构接口(interface)上仅更新一个值

node.js - node-mongodb 防止 websocket 数据丢失

javascript - 复制 HTML 子节点数组的一半

javascript - 检索解析数据库中对象的值

javascript - 指令调用后加载来自 MongoDB 的数据

javascript - Django 如何将点击的链接文本传递到另一个显示静态图像的 HTML 页面上的 URL?