javascript 如何使用valueChanges在firebase数据库中只读取数据一次?

m4pnthwp  于 2023-05-16  发布在  Java
关注(0)|答案(2)|浏览(179)

我的ionic 5(Angular)项目使用Google firebase数据库。
这是我用来从firebase数据库读取数据的示例代码。我只想读取数据一次。由于valueChanges()是一个观察对象,我想我每次使用它时都必须取消订阅。

constructor(db: AngularFireDatabase) {
    this.tempsub = db.list('items').valueChanges().subscribe(data=>{...});
    this.tempsub.unsubscribe()
  }

我是否必须在我的用例中取消订阅?是否有更好的解决方案,只从firebase数据库中读取一次数据?

z9smfwbn

z9smfwbn1#

您可以使用take运算符来配置所需的发射次数。
使用take(1)将发出第一个值,然后完成并取消订阅。

db.list('items').valueChanges()
  .pipe(take(1))
  .subscribe(...);
iqxoj9l9

iqxoj9l92#

你也可以使用forEach(),它返回一个promise,当Observable完成或出错时,它将解析或拒绝。
您不能取消订阅forEach(),但在这种情况下不需要取消订阅,因为take(1)从源中获取第一个值,然后完成。

db.list('items').valueChanges()
  .pipe(take(1))
  .forEach(items => do something with items);

相关问题