Как добавить файл с помощью fs.appendFile (), но не записать другой объект JSON - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь записать пару ключ-значение в моем файле json, используя fs.appendFile ().

Вот мой код:

 router.post('/add', function(req, res) {
  var article = {
    title: req.body.title,
    content: req.body.content
  }

  var articleData = {};

  articleData[article.title] = article.content;

  var textData = JSON.stringify(articleData, null, 2);

  fs.appendFile('model/text.json', textData, 'utf8', finished);

  function finished () {
    console.log('Finished writing');
  }
});

Но в моем * Файл 1006 *, я получаю только это:

{
  "test1": "test1"
}{
  "test2": "test2"
}

Я не могу добавить его так:

{
    "test1": "test1",
    "test2": "test2"
}

1 Ответ

0 голосов
/ 03 апреля 2020

Сначала вам нужно прочитать файл, а затем обработать данные json, чтобы добавить в него свой контент. И вашим вторым шагом будет запись файла. Вы можете сослаться на следующий пример.

fs.readFile('model/text.json', 'utf8', function readFileCallback(err, data){
    if (err){
        console.log(err);
    } else {
    objData = JSON.parse(data); //now it an object
    objData.test2 = 'test2'; //add/append desired data
    jsonData = JSON.stringify(objData); //convert it back to json
    fs.writeFile('model/text.json', jsonData, 'utf8', callback); // write it back 
}});
...