【问题标题】: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 的当前值@ 而不是每个值都会随着它的到来而改变。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-04
        相关资源
        最近更新 更多