如何使用 fs.appendFile() 追加文件但不写入另一个 JSON 对象

Posted

技术标签:

【中文标题】如何使用 fs.appendFile() 追加文件但不写入另一个 JSON 对象【英文标题】:How to append a file using fs.appendFile() but not write another JSON object 【发布时间】:2020-07-15 16:39:57 【问题描述】:

我正在尝试使用 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"

【问题讨论】:

【参考方案1】:

首先您需要读取您的文件,然后处理 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 
);

【讨论】:

以上是关于如何使用 fs.appendFile() 追加文件但不写入另一个 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章

nodejs之fs模块

Node.js——fs模块(文件系统),创建删除目录(文件),读取写入文件流

Node.js之文件及文件流(fs,path,buffer,stream)

微信小程序开发-文件系统

我想使用 fs 以 json 格式将值存储在文件中

尝试使用Electron应用程序中的节点fs的不同方法创建新文件时出错