首页 > 解决方案 > 无法使用 NodeJS 中猫鼬的 Item.removeOne() 或 Item.findByIdAndRemove() 方法从待办事项列表中删除项目

问题描述

我正在使用 mongodb、node.js、express 和 EJS 制作待办事项列表。我被卡住的部分是我无法从列表和数据库中删除和项目。这个想法是,单击复选框时,旁边的项目将被删除。这是相同的布局,[https://i.stack.imgur.com/83gMW.png][1]

我在我的 EJS 文件中进行了必要的更改,以创建一个“/delete”路由,如下所示:

<%for(var i=0;i<taskslist.length;i++){%>
          <form action="/delete" method="POST">
        <div class="item">
                 <input type="checkbox" name="checkitem" value="<%= taskslist[i]._id %> " onChange="this.form.submit()">
                <p><%= taskslist[i].activity %> </p>
            
        </div>
      </form>
<%}%>

在我的 app.js 文件夹中,我还使用 mongoose 的 findByIdAndRemove( ) 方法进行了必要的更改:

app.post("/delete", function (req, res) {
  const delitem = req.body.checkitem;
  Item.findByIdAndRemove(delitem, function (err) {
    if (err) {
      console.log("Error");
    } else {
      console.log("Succesfully deleted" + delitem);
      res.redirect("/");
    }
  });
  console.log(delitem);
});

但是,该项目没有从数据库中删除,并且终端中显示错误,即使 console.log(delitem) 正在工作并返回选中复选框的项目的 ID。我还给出了我在终端得到的输出的截图:[https://i.stack.imgur.com/hGEkn.png][1]

所有与添加项目和创建数据库相关的方法都在工作。我不明白错误在哪里。这个你能帮我吗。

标签: node.jsexpressmongooseejs

解决方案


推荐阅读