每当我向节点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
}
答案 0 :(得分:3)
您应该在todos.json
处理程序的开头阅读delete
。
app.delete("/api/:id", (req, res) => {
const todos = fs.readFileSync("./todos.json", { encoding: 'utf-8' })
...