我有一个包含许多作业的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]
答案 0 :(得分:1)
问题在于,当您订阅valueChanges()
时,它会变得热门,并且无法完成,因此您将无法获得所需的结果-当所有职位1 到达了吗?某些解决方法可以完成,例如f.ex。添加一个timeout
并使用scan
收集累加器Subject等中的所有值,然后合并并发出。
但是,如果您已经在本地存储了所有数据,是否有意义?可能不会。 IMO,您只能在回应到达后进行处理,例如创建主题,然后根据job number 1
对其调用next()
。