2016-08-01 48 views
2

我正在嘗試使用NodeJS進行CRUD操作。但是我不知道如何檢查JSON文件是否已經獲得了特定的部分,然後只更新需要的對象並且不覆蓋其他數據或者在沒有記錄的情況下添加新數據。如何在NodeJS中檢查json文件是否已獲得特定數據

這是我迄今(對現在的插入操作將覆蓋整個文件,只插入數據離開它):

JSON:

JSON: 

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

代碼:

var operation = POST.operation; // POST request comes with operation = update/insert/delete 

     if (operation == 'insert') { 
      fs.readFile("data.json", "utf8", function (err) { 
       var updateData = { 
        id: POST.id, 
        name: POST.name, 
       } 
       var newUser = JSON.stringify(updateData); 
       fs.writeFile("data.json", newUsers, "utf8"); 
       console.log(err); 
      }) 
     } 
     else if (operation == 'update') { 
      fs.readFile("data.json", "utf8", function (err) { 

      }) 
     } 
     else if (operation == 'delete') { 
      fs.readFile("data.json", "utf8", function (err) { 

      }) 
     } 
     else 
      console.log("Operation is not supported"); 

我發現的大多數例子都是使用Database和Express.js。所以他們沒有太多幫助。

對不起,我是新手。

+0

檢查,如果數據有一個鍵和其在JSON文件獨一無二的,如果它不是垃圾的日期,如果它是將其添加到文件 – madalinivascu

回答

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集成。

我希望這有助於!

好運

+0

謝謝您的時間,並幫助:) – Bongskie

+0

無問題!感謝接受:) ..希望它有幫助 –

+0

確實,從開始學習有點難。很高興有像堆棧這樣的網站! – Bongskie

相關問題