如果json文件已经获得特定数据,如何检查NodeJS

时间:2016-08-01 09:04:56

标签: javascript json node.js crud

我尝试使用NodeJS进行CRUD操作。但我不知道如何检查JSON文件是否已经获得特定部分,然后只更新所需的对象,而不是覆盖其他数据或添加新数据(如果没有记录)。

这是我到目前为止(现在插入操作会覆盖整个文件,只留下插入的数据):

JSON:

Origin

代码:

JSON:

{
    "id": 1,
    "name": "Bill",
},
{
    "id": 2,
    "name": "Steve",
},

我发现的大多数示例都是使用Database和Express.js。所以他们并没有这样做。真的很有帮助。

抱歉,我是新手。

1 个答案:

答案 0 :(得分:1)

首先,这是无效的JSON(除非这只是文件的一部分)。您需要将整个列表包装成一个数组,以使其成为有效的JSON(您可以检查您的JSON是否有效here

如果你选择这样的结构:

[
    {
        "id": 1,
        "name": "Bill",
    },
    {
        "id": 2,
        "name": "Steve",
    },
]

我认为检查ID是否已存在的最简单方法是将JSON作为数组读取并检查是否已分配ID。像这样:

var json = require('/path/to/data.json'); // Your object array

// In the if (operation == 'insert') block
var hadId = json.some(function (obj) {
  return obj.id === POST.ID;
});

if (hasId) {
    // Do something with duplicate
}

json.push({
    id: POST.id,
    name: POST.name
});

// Write the whole JSON array back to file 

有关array.some function

的更多信息

所以基本上你将整个JSON文件保存在内存中(在json数组中),当你对数组进行更改时,你将整个更新的列表写回文件。

如果该数组变得非常大,您可能会遇到此问题,但此时我建议您考虑使用数据库。 Mongo(所有这些都不是世界上最伟大的数据库)相当容易设置并在播放和试验时与JavaScript集成。

我希望这有帮助!

祝你好运