javascript - 在仪表板页面上显示实时计数器
问题描述
我有一个消息传递应用程序,其中每条消息都存储在实时数据库中。有一个仪表板显示到目前为止交换的消息总数。
为了实现统计信息,每天存储消息计数,并在交换新消息时使用 firebase 函数触发器更新当前计数。
下面是数据的样子
stats
count
1559260800000
messages: 48
1559347200000
messages: 6
我的仪表板 html 如下所示
<div>{{msgCount}}</div><div style="display: none">{{msgCountArr | async}}</div>
我的 .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 基本上不断添加整数,因为我不知道每次从 db 新获取数据时如何重置计数器。
如果有更好的方法来做到这一点,也欢迎。
解决方案
推荐阅读
- java - Enum setter 的负单元测试
- sql-server - 将天时分秒转换回日期时间
- node.js - 最大反应 Discord.js 的问题
- linux - 如何在 Linux 上计时运行时
- hive - 在配置单元中将字符串转换为 BIGINT 未给出预期结果
- pyspark - 以天为单位触发 sql datediff
- react-native - Admob 横幅适用于世博会,但不适用于 testflight
- ruby - 红宝石哈希。如何在屏幕上将每个键显示为表格?
- reactjs - 如何在样式组件中交换图像 url?
- javascript - 从构造函数创建的对象如何能够访问用于创建它的构造函数中的变量?