@baroman4ik

Как реализовать последовательные чтение и запись JSON-файла на node.js?

На сервер приходит массив, его нужно запихнуть в json-файл и при успехе прочитать этот же файл и вернуть его на клиент.
Пробовал сделать следующим образом:
async function writeData(data) {
  data = JSON.stringify(data);
  try {
    fs.writeFile("localData.json", data, "utf8", async (err) => {
      if (err) console.error(err);
      else {
        fs.readFile("localData.json", "utf8", (error, array) => {
          themes = array;
          return themes;
        });
      }
    });
  } catch (err) {
    console.error(err);
  }

app.post("/newarray", async function (req, res) {
  try {
    const newarray = await writeData(req.body);
    console.log("newarray was successfully saved", newarray);
    res.json(newarray);
  } catch (err) {
    console.log(err);
  }
});

, но возвращает undefined. подскажите, в чём ошибка. Несколько раз читал документацию, но так и не допёр в чём ошибка.
  • Вопрос задан
  • 276 просмотров
Пригласить эксперта
Ответы на вопрос 1
@DeFaNJI
async function writeData(data) {
  data = JSON.stringify(data);
  let themes;
  try {
    fs.writeFile("localData.json", data, "utf8", async (err) => {
      if (err) console.error(err);
      else {
        fs.readFile("localData.json", "utf8", (error, array) => {
          themes = array
        });
      }
    });
  } catch (err) {
    console.error(err);
  }
  if (themes) return themes;
}
app.post("/newarray", async function (req, res) {
  try {
    const newarray = await writeData(req.body);
    console.log("newarray was successfully saved", newarray);
    res.json(newarray);
  } catch (err) {
    console.log(err);
  }
});


Возможно вот так?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы