Обновление Firebase NodeJS - PullRequest
       18

Обновление Firebase NodeJS

0 голосов
/ 21 ноября 2018

Почему мне не удается обновить набор результатов?У меня есть 1000 предметов, и я запрашиваю Firebase и возвращаю массив DataSnapShot.Я хочу проверить каждый элемент массива и, если условие существует, то изменить «тип» на «С».Я не получаю ошибок, но обновление, похоже, не применено.Я делаю это в обещании, которое возвращается, и все же обновление "игнорируется".

var db = admin.database();
var ref = db.ref("/calendars");

ref.once("value", function(snapshot) {

  snapshot.forEach(function(data) {
    var obj = data.val();
    if (someconditionIsTrue) {
      var objToUpdate = `calendars\\${data.key}`;
      console.log(`Should update ${objToUpdate}`);

      var entryRef = db.ref("/calendars").child(data.key).child('type');
      entryRef.transaction(function(t) {
        console.log(`TYPE: ${t}`); // DISPLAYS NULL EVEN THOUGH THERE IS A CHAR IN DB
        return "C"; // Should change TYPE in the record to a "C"
      });
    }

Также пытался просто сделать набор внутри forEach на хорошо, но это тоже не работает (что являетсяпочему я решил использовать транзакцию).

1 Ответ

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

Фрэнк ответил на это наилучшим образом:

Транзакции базы данных Firebase сравниваются и устанавливаются.Обратный вызов будет немедленно вызван с лучшим предположением, которое клиент имеет о текущем значении.Часто это будет нулевым.Вы сообщаете ему, что новое значение будет основано на этом, и ваш обратный вызов в конечном счете будет вызван снова с обновленным предположением текущего значения.См. Stackoverflow.com/questions/33578887/… - Фрэнк ван Пуффелен 21 ноября 18 года в 16: 21

...