Удалить / обновить JSON ключ node.js - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь либо обновить, либо удалить (а затем переписать) ключ JSON в node.js

JSON:

{"users":[{"Discordid":"discid","Username":"user","Password":"pass","School":"schoolname"}, {"Discordid":"discid1","Username":"user1","Password":"pass1","School":"schoolname1"}]}

Я хочу удалить весь {"Discordid":"discid","Username":"user","Password":"pass","School":"schoolname"} через для l oop, поэтому я использую переменную a, которая равна числу, в котором я хочу удалить данные.

Я пытался:

fs.readFile('databases/magistercredentials.json', 'utf-8', function (err, data1) {
     if (err) throw err
     var magistercreds = JSON.parse(data1)
     for (a = 0; a < Object.keys(magistercreds.users).length; a++) delete magistercreds.users[a]

И другие вещи, которые не все работали.

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Вопрос не ясен, должен ли быть удален ключ или весь объект. Предполагая, что весь элемент должен быть удален из массива users, можно использовать метод сращивания .

Сначала найдите индекс элемента, который вы хотите удалить, используя findIndex. Затем вы можете использовать splice для изменения массива на месте.

Пример:

fs.readFile('databases/magistercredentials.json', 'utf-8', function (err, data1) {
     if (err) throw err
     var magistercreds = JSON.parse(data1)
     // Assuming you want to delete the element which has the Discordid property as "discid"
     var indexOfElement = magistercreds.findIndex(el => el.Discordid === "discid")
     magistercreds.users.splice(indexOfElement, 1) // This will remove 1 element from the index "indexOfElement" 
}

Для добавления, использование Object.keys для перебора массива не требуется. Формуляр для l oop в исходном вопросе можно переписать следующим образом:

for (a = 0; a < magistercreds.users.length; a++) delete magistercreds.users[a]

Пожалуйста, отредактируйте вопрос, чтобы добавить больше информации, если это не то, чего вы хотели достичь.

1 голос
/ 05 апреля 2020
fs.readFile('databases/magistercredentials.json', 'utf-8', function (err, data1) {
     if (err) throw err
     var magistercreds = JSON.parse(data1)
     for (a = 0; a < magistercreds.users.length; a++){
          magistercreds.users.splice( a, 1 );
          a--; // to step back, as we removed an item, and indexes are shifted
     }

Но, может быть, вы хотите просто обновить, чтобы вы могли сделать это просто:

fs.readFile('databases/magistercredentials.json', 'utf-8', function (err, data1) {
     if (err) throw err
     var magistercreds = JSON.parse(data1)
     magistercreds.users[68468] = {.....}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...