Удаление запросов, не сохраняющихся в узле js

#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' })
  ...