使用Node.js将对象添加到JSON

时间:2018-08-23 23:26:34

标签: javascript json node.js

我有一个JSON文件,需要将它用作数据库来添加,删除和修改用户,我有以下代码:

'use strict';

const fs = require('fs');

let student = {  
    id: 15,
    nombre: 'TestNombre', 
    apellido: 'TestApellido',
    email: 'TestEmail@gmail.com',
    confirmado: true 
};


let data = JSON.stringify(student, null, 2);
fs.writeFileSync('personas.json', data);

但这会覆盖JSON文件,我需要附加另一个对象,因此它以ID 15继续(最后一个是14)。

这是JSON文件的一部分:

{
  "personas": [
    {
      "id": 0,
      "nombre": "Aurelia",
      "apellido": "Osborn",
      "email": "aureliaosborn@lovepad.com",
      "confirmado": false
    },
    {
      "id": 1,
      "nombre": "Curry",
      "apellido": "Jefferson",
      "email": "curryjefferson@lovepad.com",
      "confirmado": true
    },
  ]
}

我该怎么做?

2 个答案:

答案 0 :(得分:1)

每次要写入JSON文件时,都需要先读取/解析它,更新Object,然后再将其写入磁盘。

已经有一个流行的解决方案可以解决这个问题。结帐lowdb

对于自动索引-我认为文档为该模块提供了一些帮助程序库的实现方法

不要重新发明轮子!

答案 1 :(得分:1)

require个文件,将student推入personas道具中,然后 writeFileSync回来。

'use strict';

const fs = require('fs');

let current = require('./personas.json');
let student = {
    id: 15,
    nombre: 'TestNombre',
    apellido: 'TestApellido',
    email: 'TestEmail@gmail.com',
    confirmado: true
};

current.personas.push(student);

// Make sure you stringify it using 4 spaces of identation
// so it stays human-readable.
fs.writeFileSync('personas.json', JSON.stringify(current, null, 4));