【问题标题】:AngularFire: get single object from Observable array without querying the database againAngularFire:从 Observable 数组中获取单个对象,而无需再次查询数据库
【发布时间】:2020-06-06 22:59:10
【问题描述】:

我有两个组件共享一个服务。其中一个组件从 Firestore 获取整个集合作为 observable。

第二个组件应该显示单个文档的所有数据。 但是,我不确定如何在不再次查询数据库的情况下实现这一点。

我已经尝试在现有的 observable 上使用pipe(map(documents => documents.find(...matching logic...))),但它仍然会再次查询数据库。

所以 TL;DR:我查询了整个集合,如何在不再次查询数据库的情况下从中获取单个文档?

【问题讨论】:

  • 在服务中缓存“整个集合”响应(可能使用 observable)。使用第二个组件中的缓存数据。
  • 管道shareReplay(1)
  • 成功了!谢谢!
  • @NielsKersic 请添加解决方案作为答案,以便其他人可以看到问题已解决,stackoverflow.com/help/self-answer

标签: angular google-cloud-firestore rxjs


【解决方案1】:

在第一次检索集合时通过管道输入shareReplay(1),后续请求将使用本地缓存的集合,而不是再次从数据库中请求数据。

第一个请求看起来像这样

this.angularFirestore.collection('collection')
  .valueChanges()
  .pipe( shareReplay(1) )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-11
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    相关资源
    最近更新 更多