Транзакция базы данных Firebase в реальном времени возвращает ноль - PullRequest
0 голосов
/ 14 декабря 2018

Я использую транзакцию Firebase в своей базе данных в реальном времени, чтобы получить последний счетчик, но он возвращает ноль вместо счетчика. Я не знаю, что я делаю неправильно в этом запросе.

  export const updateDashboardCount = (id, childName) =>
  db.ref('dashboard/' + id).child(childName).transaction((data) => {
    console.log('data is', data);
  });

Где id -LT0uc53cRmufLotuGd0, а ChildName - сотрудники.

Вывод, который я получаю, равен нулю

Dashboard

1 Ответ

0 голосов
/ 14 декабря 2018

Я думаю, что вы должны вернуть data следующим образом:

  export const updateDashboardCount = (id, childName) =>
  db.ref('dashboard/' + id).child(childName).transaction((data) => {
    console.log('data is', data);
    return data;
  });

Я предполагаю, что вы собираетесь обновить значение data в будущей версии, а не только регистрировать его на консоли.


Обновление:

Как сказано в комментарии, с указанным выше кодом вы сначала получите console.log с null изатем a console.log с правильными данными из-за асинхронности.

Если вы хотите получить только один «правильный» console.log, вы можете сделать следующее (см. doc )

  db.ref('dashboard/' + id).child(childName).transaction((data) => {
      return data;
  }, function (error, committed, snapshot) {
      if (error) {
          console.log('Transaction failed abnormally!', error);
      } else if (!committed) {
          console.log('We aborted the transaction (because ada already exists).');
      } else {
          console.log('data is' + snapshot.val());
      }
  });
...