将 .groupBy 与 Firestore 收集数据一起使用

Using .groupBy with Firestore collection data

我有一个包含多个作业的 Firestore 集合,但我想在客户端按作业编号对它们进行分组。我已经在网上浏览了很多示例,例如 this.jobs = this.afs.collection('jobs').valueChanges().pipe(groupBy((job: any) => job.jobNumber), mergeMap(group => group.pipe(toArray()))); 但没有成功。我有的是

工作 - 工作编号 1 - 工作编号 2 - 工作编号 3 - 工作编号 1

但我想要的是

工作 - [工作编号 1,工作编号 1] - [工作编号 2] - [工作编号 3]

问题是,当您订阅 valueChanges() 时,它会变得 hot 可观察并且永远不会完成,因此您无法获得想要的结果 - 流应该如何知道所有 1 号工作 什么时候到达吗?不过,可以采取一些变通办法,f.ex。添加一个 timeout 并使用 scan 收集累加器主题等中的所有值,然后合并它们并发出。

但是,如果您已经将所有数据存储在本地,这有意义吗?可能不会。 IMO,你只能在它到达后使用响应,f.ex。创建主题并根据 job number 1 对它们调用 next()