在Node Js中写入文件时如何将对象推入数组

sta*_*r67 0 javascript arrays fs node.js

如何在写入Node Js中的文件时将对象推入数组?我目前有以下工作代码

fs.appendFile("sample.json", JSON.stringify(data, undefined, 2) + ",");
Run Code Online (Sandbox Code Playgroud)

其中 data 是一个对象,比如

{
name:'abc',
age: 22,
city: 'LA'
}
Run Code Online (Sandbox Code Playgroud)

追加后,结果如下

{
name:'abc',
age: 22,
city: 'LA'
},
{
name:'def',
age: 25,
city: 'MI'
},
Run Code Online (Sandbox Code Playgroud)

我在这里看到 2 个问题。1.末尾的尾随逗号 2.无法形成数组并将对象推入其中

任何线索将不胜感激

Kam*_*nrf 5

Append 将您的数据附加到一个文件中,这里数据被视为一个字符串,所有附加将等于将字符串连接到另一个字符串。

相反,这里需要首先读取文件并将其转换为数据结构,对于此示例,它可以是对象数组并将该数据结构转换为字符串并将其写入文件。

写入文件

fs.writeFileSync('sample.json', JSON.stringify([data], null, 2));
Run Code Online (Sandbox Code Playgroud)

示例.json

[
  {
    "name": "abc",
    "age": 22,
    "city": "LA"
  }
]
Run Code Online (Sandbox Code Playgroud)

从文件中读取

const fileData = JSON.parse(fs.readFileSync('sample.json'))
fileData.push(newData)
Run Code Online (Sandbox Code Playgroud)

将追加到前一个的新数据写入文件

fs.writeFileSync('sample.json', JSON.stringify(fileData, null, 2));
Run Code Online (Sandbox Code Playgroud)

示例.json

[
  {
    "name": "abc",
    "age": 22,
    "city": "LA"
  },
  {
    "name": "abc",
    "age": 22,
    "city": "LA"
  }
]
Run Code Online (Sandbox Code Playgroud)