#javascript #node.js #express
#javascript #node.js #выразить
Вопрос:
Каждый раз, когда я делаю запрос на удаление на свой сервер node js, он может удалить только один элемент из моего файла json между запусками сервера. Если я попытаюсь сделать второй запрос на удаление, он сработает, но он также перезаписывает последний элемент, который я удалил.
Вот реализация удаления узла js с использованием express:
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. где заполняется
newTodos
переменная?2. потому что вы никогда не обновляетесь
todos
с новым контентом. при вызове всегда начинается с исходного содержимого файла . Удалить.3. @Joe Я внес некоторые изменения, и это все еще не работает.
Ответ №1:
Вы должны прочитать todos.json
в начале delete
обработчика.
app.delete("/api/:id", (req, res) => {
const todos = fs.readFileSync("./todos.json", { encoding: 'utf-8' })
...