如何使用fs.appendFile()附加文件,但不写入其他JSON对象

问题描述 投票:0回答:1

我正在尝试使用fs.appendFile()在json文件中写一个键值对。

这是我的代码:

 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');
  }
});

但是在我的text.json文件中,我只得到这个:

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

我无法像这样附加它:

{
    "test1": "test1",
    "test2": "test2"
}
node.js json express filesystems fs
1个回答
0
投票

首先,您需要读取文件,然后处理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 
}});
© www.soinside.com 2019 - 2024. All rights reserved.