我有一个现有的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.");
});
});
}
这样可行,但它不会将新值添加到数组中。它将新值添加到数组的末尾。
答案 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)
})