Как обновить firebase массивом объектов? - PullRequest
0 голосов
/ 03 июля 2018

Для примера у нас есть база данных:

//the database
firebase: {
  1: a,
  2: b,
  3: c
}

//the ref 
var firebaseRef = firebase.database().ref();

//what we need
var change = [
  {
    id: 2,
    value: "y"
  },
  {
    id: 3,
    value: "z"
  },
];

//a possible way how we want
firebaseRef.update({
  change[0].id: change[0].value,
  change[1].id: change[1].value
})

У меня есть несколько вопросов.

Последний блок должен пройти через массив. Но я не знаю, стоит ли повторно вызывать update.

Вторым важным моментом является то, что хотя приведенные выше ключи имеют только одно значение, это хорошо, но если это объект, имеющий несколько свойств, то единственное, что мы хотим установить, переопределит другие свойства. Я думаю, что лучший способ решить эту проблему - создать цикл с установкой для дочернего элемента базы данных фактического идентификатора или ключа объекта массива, а затем обновить необходимые свойства.

Но не плохая ли практика циклически проходить по массиву и повторно вызывать функцию обновления?

1 Ответ

0 голосов
/ 03 июля 2018

Нет повторного вызова функции update(). Все запросы к базе данных передаются по одному соединению, поэтому издержки на вызов минимальны.

Но вы можете захотеть сделать одно обновление для атомарности: чтобы убедиться, что все записи разрешены или ни одна из них не разрешена.

Вот один из способов сделать это, зациклив изменения в JavaScript:

var changes = [
  {
    id: 2,
    value: "y"
  },
  {
    id: 3,
    value: "z"
  },
];
var updates = {};
changes.forEach((change) => {
  updates[change.id] = change.value;
});
ref.update(updates);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...