0
如何用一個新的更新對象用NodeJS替換舊的json對象?如何用NodeJS替換一個新的json對象
現在,當我更新json文件時,它將保存舊數據的新數據。
JSON:
[ {
"id": 1,
"name": "Sven",
"phone": "123123"
},
{
"id": 2,
"name": "Martin",
"phone": "2342342"
} ]
這裏是我的代碼:
var operation = POST.operation; // POST request comes with operation = update/insert/delete
if (operation == 'update') {
fs.readFile("file.json", "utf8", function (err, data) {
var jsonFileArr = [];
jsonFileArr = JSON.parse(data); //Parse the data from JSON file
var haveId = jsonFileArr.some(function (obj){ // Checks if the POST request have the same id as JSON file
return obj.id == POST.id;
})
if (haveId) { // if true
var updateData = []; // Array with POST data
updateData.push({
id: POST.id,
name: POST.name,
phone: POST.phone,
})
jsonFileArr.push(updateData);
var newUsers = JSON.stringify(jsonFileArr);
fs.writeFile("file.json", newUsers, "utf8");
console.log(err);
}
})
}
我也許應該使用delete object
但我怎麼可以指定應刪除哪些對象?
因此,當我更新ID爲1的數據,它會刪除舊的ID /名稱/電話,並寫入新的數據。
哇感謝,它的工作原理!但是你能解釋'for(var Arr of jsonFileArr)'Loop。 (取代讓變量,因爲我的javascipt不支持讓) 我很喜歡新的。 – Bongskie
[for ...](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of)遍歷一個可迭代的對象,在這種情況下是一個數組。它爲數組中的每個項目運行循環的主體,爲當前項目分配名稱「Arr」。節點6+應該支持'let'; 4和5具有[部分支持](http://kangax.github.io/compat-table/es6/#test-let),儘管它們沒有適當的塊範圍。 –
@UselessCode,葉,當我使用'let'時,我得到一個塊範圍的聲明錯誤。我認爲是時候升級:)謝謝你的解釋 – Bongskie