Member 12872999 Ответов: 0

Как правильно подписаться на изменения? - Angularfire2


Привет, я не часто пользовался Firebase. Метод, который я использую для получения значений, кажется грязным...

Я использую этот метод, чтобы получить сумму суммы для каждого объекта. value в ListObservable

Может ли кто-нибудь сказать, как лучше всего подписаться на изменения, чтобы totalAmount оставался в актуальном состоянии?

//Returns a promise of the total sum for each object.amount under a category
getTotalAmountPromise(observable) {
  let totalAmount: number = 0;
  return new Promise(function(resolve, reject) {
    let count = 0;

    observable.$ref.ref.on('child_added', childs => {
      childs.ref.once('value', obj => {
        totalAmount += obj.val().amount;
        count++;

        let length = childs.numChildren();
        if(count == length) {
          resolve(totalAmount);
        }
      });
      setTimeout(() => {
        if (!(count == length))
          reject(Error('Data rejected. Count: ' + count + ', Childs: ' + length));

      }, 5000);
    });

  });
}


Что я уже пробовал:

Кажется, я не могу найти хороший способ сделать это. Я надеялся, что кто-нибудь здесь сможет прийти с каким-нибудь руководством.

0 Ответов