如何在Node JS中为现有的JSON文件数组添加值

时间:2018-01-11 09:36:46

标签: arrays json node.js

我有一个现有的JSON文件,数据是这样的。

[{"address":"unit f 11-13 short street, auburn, nsw 2144"},{"address":"village green brooks circuit, lidcombe, nsw 2141"}]

我想为此JSON文件添加新值。这是我的方法。

function saveNewAddress(
  address /* :?string | void */, cb
) /* :Promise<string> */ {


  return new Promise(function(resolve, reject) {
    fs.appendFile('address-list.json', JSON.stringify(address), "utf8", function(err) {
    if (err) throw err;
    console.log("File saved.");
}); 

});

}

这样可行,但它不会将新值添加到数组中。它将新值添加到数组的末尾。

1 个答案:

答案 0 :(得分:1)

当您使用fs.appendFile()时,数据将作为字符串添加到文件末尾,而不是新数组元素。

您需要将JSON文件的内容作为JavaScript对象获取,将属性添加到数组中,最后保存新文件。

一种方法是用fs.readFile()读取文件,就像TGW在评论中所建议的那样。
但是NodesJS有一个方便的方法来使用require()

const fs = require('fs');
const json = require('./address-list.json');

function saveNewAddress(address) {    
  return new Promise((resolve, reject) => {
    json.push({address})    
    fs.writeFile('address-list.json', JSON.stringify(json), (err) => {
      if (err) reject(err)
      resolve("File saved.")
    })
  });
}

saveNewAddress('some_new_adress')
  .then(result => {
    console.log(result) 
})