首页 > 解决方案 > 如何解决从 mongodb 中删除项目的问题?

问题描述

我试图从 mongodb 中删除一个项目但失败了。

这是服务器端代码:

// to delete single data
  app.delete("/delete/:id", (req, res) => {
    console.log(id);
    tasksCollection
      .deleteOne({ _id: ObjectId(req.params.id) })
      .then((result) => {
        res.send(result.deletedCount > 0);
        console.log(result);
      });
  });

这是客户端代码:

function deleteProduct(id) {
    console.log(id);
    fetch(`http://localhost:5000/delete/${id}`, {
      method: "DELETE",
    })
      .then((res) => res.json())
      .then((result) => {
        console.log(result);
      });
  }

以及从服务器站点显示的错误:

ReferenceError: id is not defined

以及从客户端站点显示的错误:

DELETE http://localhost:5000/delete/5f780abe7ce75b5be88ebd44 500 (Internal Server Error)
localhost/:1 Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0

这是我的点击处理程序:

<div>
      <h3>This is home</h3>
      {showTasks.map((showTask) => (
        <div>
          <h4>{showTask.name}</h4>
          <button onClick={() => deleteProduct(`${showTask._id}`)}>
            Delete tasks
          </button>
        </div>
      ))}
    </div>

在客户端站点代码中,我有 console.log(id)。如果我单击删除任务按钮,我可以获得任务的特定 id,但问题出在获取中。所以 id 没有在服务器站点代码中定义。任何人都请帮助我如何解决这个问题???

标签: reactjsmongodb

解决方案


错误在你的console.log(id),应该是console.log(req.params.id)。由于 id 没有在那里定义,它会给你错误:ReferenceError: id is not defined

尝试这个:

// to delete single data
  app.delete("/delete/:id", (req, res) => {
    console.log(req.params.id); //req.params.id instead of id
    tasksCollection
      .deleteOne({ _id: ObjectId(req.params.id) })
      .then((result) => {
        res.send(result.deletedCount > 0);
        console.log(result);
      });
  });

此外,您在客户端遇到的错误是因为res.json()您获得的响应不是字符串化的 json,所以您可能不会这样做,而只是尝试打印res


推荐阅读