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

时间:2016-08-06 00:39:18

标签: json node.js



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文件,其数据样式与上面的代码类似。我应该不断将对象添加到"项目"阵列。但是,如果我采用上面代码中的方法,我每次要添加新项目时都必须加载并保存整组数据。
所以我的问题是:是否有方法直接操作json文件,没有加载和保存整个数据的麻烦(就像处理数据库系统一样)?

2 个答案:

答案 0 :(得分:1)

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

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

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

但是再一次,如果你在这个状态下问这些问题,数据库可能更合适。

答案 1 :(得分:0)

你不能真的,只要文件看起来像那样(意味着你正在将样式应用于输出)。如果你只是每行只有一个“条目”,那么你可能可以轻松追加(这是你没有spaces: 2时应该得到的),那么你可以:

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

在没有JSON.parse()和后续JSON.stringify()的情况下追加。