如何将json数据附加到文件中?

var jsonfile = require('jsonfile'); var data = require('./data.json'); var items = data.items; data.items[items.length] = { msg: "A new message" }; jsonfile.writeFile('./data.json', data, { spaces: 2 }, function(err) { console.error(err); }); 
 { "items": [ { "name": "Tom", "time": "7.4.2016 3:13PM", "msg": "message1" } , { "name": "Tom", "time": "7.4.2016 3:13PM", "msg": "message2" } , { "name": "Tom", "time": "7.4.2016 3:13PM", "msg": "message3" } ] } 

我需要使用node.js来维护一个json文件,其数据样式类似于上面的代码。 我应该不断的添加对象到“items”数组中。 但是,如果我在上面的代码中采用这个方法,每次我想添加一个新的项目,我都必须加载并保存大量的数据。
所以我的问题是:
有没有一种方法直接操纵JSON文件,没有加载和保存整个数据的麻烦(就像处理数据库系统)?

如果你发现自己正在加载和保存“一大堆数据”,并且正在寻找附加json的方法,那么这就是你需要一个数据库的标志。

有典型的mongodb等等服务器。 但是如果您的需求很简单,您还可以查看简单的embedded式数据库(如NEDB) 。 这个(和其他embedded式数据库)是基于文件的数据库,他们已经解决了你的问题。 没有理由像“数据库系统”一样。 只要用一个:)

如果你不得不采用文件方式,另一种可能性是编写单个文件,或者如果文件太多,那么你可以编写项目的“页面”。 但是可行性取决于你的阅读模式。

但是再一次,如果你在这个状态提出这些问题,一个db可能更合适。

你不能真的,只要文件看起来像那样(这意味着你正在将样式应用到输出)。 如果你每行只有一个“入口”(这是你没有spaces: 2时候应该得到的),那么你可以很容易地追加,然后你可以:

 fs.appendFile('./foo.json', JSON.stringify(obj) + '\n', callback); 

追加JSON.parse()和后续的JSON.stringify()