Отображение счетчика в реальном времени на странице панели инструментов - PullRequest
0 голосов
/ 01 июня 2019

У меня есть приложение для обмена сообщениями, где каждое сообщение хранится в реальном времени в БД. Существует панель для отображения общего количества сообщений, которыми обмениваются до сих пор.

Чтобы реализовать статистику, счетчик сообщений сохраняется за каждый день, а счетчик за текущий день обновляется с помощью триггера функции firebase при обмене новыми сообщениями.

ниже показано, как выглядят данные

stats
     count
        1559260800000 
           messages: 48
        1559347200000
           messages: 6

Мой HTML-код панели инструментов, как показано ниже

 <div>{{msgCount}}</div><div style="display: none">{{msgCountArr | async}}</div>

my .ts

 msgCount:number
 msgCountArr: Observable<any[]> 

refreshMessages(){
  this.msgCountArr = this.dataSvc.fetchMsgCount().pipe(
    map((msgs: any) => msgs.map(msgObj => {
          this.msgCount = +this.msgCount + +msgObj.messages
          return msgObj
     }))
  );
}

Сервис выглядит ниже

  private msgCountList: AngularFireList<Object>

fetchMsgCount(){
    this.msgCountList = this.db.list<Object>('stats/count', ref => ref.orderByChild("messages"))

    return this.msgCountList.snapshotChanges().pipe(
       map(changes => 
        changes.map(c => ({ key: c.payload.key, ...c.payload.val()}))
       )
      ) ;
  }

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

Также добро пожаловать, если есть лучший способ сделать это.

...