【问题标题】:How to get() multiple updated values only once in Firebase Real Time Database (Angular)如何在 Firebase 实时数据库(Angular)中只获取()多个更新值
【发布时间】:2019-05-29 13:14:35
【问题描述】:
我正在固定时间段更新 Firebase - 实时数据库中每个用户的所有数据,我正在使用:
this.db.list('/' + this.user.uid + '/data).valueChanges()
.subscribe(items=>{
console.log(items)
});
检索更新。但是因为更新了多个值(即使一次全部更新),我在 Web 应用程序中一次收到一个更新。
这是正常的吗?有什么方法可以全部更新并只接收一次更新?
【问题讨论】:
标签:
angular
firebase
firebase-realtime-database
angularfire2
【解决方案1】:
如果您在侦听器的位置进行多次独立更新,则侦听器可以触发与更新一样多的次数。该系统将尝试尽可能快地同步所有更改。您无法更改此行为。如果您只想要一次更新,那么您应该只在该位置进行一次更改。
【解决方案2】:
如果你真的不喜欢多重发射,你可以在订阅之前尝试一些 RxJS 操作符。
this.db.list('/' + this.user.uid + '/data).valueChanges().pipe(
buffer(interval(1000))
)
.subscribe(items=>{
console.log(items);
});
例如,这将在一秒范围内发出一个值数组。
如果有办法在您更新时收听(或者更确切地说,是服务器确认更新成功),您可以收听,然后只需获取 @987654322 的当前值@ 而不是每个值都会随着它的到来而改变。