删除请求未持久存在于节点js中

时间:2020-09-25 14:10:13

标签: javascript node.js express

每当我向节点js服务器发出删除请求时,它只能在服务器启动之间从json文件中删除一项。如果我尝试提出第二个删除请求,它可以工作,但它也会重写回我删除的最后一个项目。

这是使用express的节点js删除实现:

const todos = require("./todos.json"); //Load the node js File
const fs = require("fs");

app.delete("/api/:id", (req, res) => {
  const id = req.params.id;
  let newTodos = todos.filter((todo) => {
    return todo.id !== id;
  });
  fs.writeFileSync(__dirname + "/todos.json", JSON.stringify(newTodos));
  todos = newTodos;
  res.send("Todo deleted");
});

这是json文件中的项目包含在规则数组中的样子:

  {
    "id": "bd58d991-bdda-4d8d-aca3-ae7ee01e1296",
    "activity": "Buy Groceries",
    "completed": false
  }

1 个答案:

答案 0 :(得分:3)

您应该在todos.json处理程序的开头阅读delete

app.delete("/api/:id", (req, res) => {
  const todos = fs.readFileSync("./todos.json", { encoding: 'utf-8' })
  ...