将.groupBy与Firestore收集数据结合使用

时间:2019-05-14 08:49:35

标签: rxjs google-cloud-firestore rxjs6 angularfire5

我有一个包含许多作业的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]

1 个答案:

答案 0 :(得分:1)

问题在于,当您订阅valueChanges()时,它会变得热门,并且无法完成,因此您将无法获得所需的结果-当所有职位1 到达了吗?某些解决方法可以完成,例如f.ex。添加一个timeout并使用scan收集累加器Subject等中的所有值,然后合并并发出。

但是,如果您已经在本地存储了所有数据,是否有意义?可能不会。 IMO,您只能在回应到达后进行处理,例如创建主题,然后根据job number 1对其调用next()