Как заменить старый json-объект с помощью NodeJS новым обновленным объектом?Как заменить старый json-объект на новый с помощью NodeJS
Прямо сейчас, когда я обновляю 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
, но как я могу определить, что объект должен быть удален?
Поэтому, когда я обновляю данные с идентификатором 1, он удаляет старый идентификатор/имя/телефон и записывает новые данные.
Wow спасибо, это работает! Но вы можете объяснить «Loop» для (var Arr jsonFileArr). (заменил let с var, потому что мой javascipt не поддерживает let) Я prety новый. – Bongskie
[для ... of] (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, Ye, я получаю ошибку объявления с блочной областью, когда я использую 'let'. Я думаю, что пришло время обновить :) Спасибо за ваше объяснение – Bongskie