我尝试使用NodeJS进行CRUD操作。但我不知道如何检查JSON文件是否已经获得特定部分,然后只更新所需的对象,而不是覆盖其他数据或添加新数据(如果没有记录)。
这是我到目前为止(现在插入操作会覆盖整个文件,只留下插入的数据):
JSON:
Origin
代码:
JSON:
{
"id": 1,
"name": "Bill",
},
{
"id": 2,
"name": "Steve",
},
我发现的大多数示例都是使用Database和Express.js。所以他们并没有这样做。真的很有帮助。
抱歉,我是新手。
答案 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
的更多信息
所以基本上你将整个JSON文件保存在内存中(在json
数组中),当你对数组进行更改时,你将整个更新的列表写回文件。
如果该数组变得非常大,您可能会遇到此问题,但此时我建议您考虑使用数据库。 Mongo(所有这些都不是世界上最伟大的数据库)相当容易设置并在播放和试验时与JavaScript集成。
我希望这有帮助!
祝你好运