Обновите элемент в каждом узле коллекции в базе данных реального времени с помощью Firebase CLI - PullRequest
0 голосов
/ 27 марта 2019

У нас есть коллекция профилей в базе данных Firebase Realtime, которую мы хотели бы обновить.Структура проста

/ профили

  • abc { key1: value, key2: value }
  • градус { key1: value, key2: value }
  • xyz { key1: value, key2: value }

Каждый элемент - это объект с несколькими парами ключ / значение, и мы хотели бы добавить новую пару ключ / значение к всем элементам в коллекции (около 5000 изих) так что:

  • abc { key1: value, key2: value, key3: value }
  • градус { key1: value, key2: value, key3: value }
  • xyz { key1: value, key2: value, key3: value }

Есть лиспособ сделать это с помощью базы данных Firebase CLI: push или database: установить методы?

Спасибо

Ответы [ 2 ]

1 голос
/ 27 марта 2019

Чтобы иметь возможность обновить элемент в базе данных, вы должны знать полный путь к этому элементу.Таким образом, чтобы обновить все дочерние узлы местоположения, вам необходимо:

  1. прочитать данные в этом местоположении
  2. выполнить итерацию по дочерним узлам
  3. обновить каждыйдочерний узел

В CLI Firebase нет встроенной единственной операции для этого, хотя вы можете составить ее, комбинируя команды datbase:get и database:update спользовательский сценарий, который выполняет итерации по дочерним узлам.

Я лично предпочитаю делать это в обычном коде, так как довольно легко написать такой цикл обновления в JavaScript (чтобы он мог работать в браузере илина Node.js).Смотрите пример моего ответа здесь: Обновите все дочерние элементы в Firebase .

0 голосов
/ 27 марта 2019

Да, есть способ. Использование update.

Псевдо-код

let data = {};
// push key3 data 
for loop profile_name {
   data[`profiles/${profile_name}/key3`] = key3_value;
}
ref.update(data);

Я не уверен насчет лимита. Вы можете прочитать больше здесь https://firebase.google.com/docs/database/admin/save-data

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...