Использование .groupBy с данными коллекции Firestore - PullRequest
1 голос
/ 14 мая 2019

У меня есть коллекция 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 Ответ

1 голос
/ 14 мая 2019

проблема в том, что когда вы подписываетесь на valueChanges(), он становится горячим наблюдаемым и никогда не завершается, поэтому вы не можете получить желаемый результат - как поток должен знать, когда все номер задания 1 прибыл? Некоторые обходные пути могут быть сделаны, хотя, например. добавьте timeout и с помощью scan соберите все значения в темах аккумулятора и т. д., затем объедините их и произведите.

Но имеет ли смысл, если вы уже храните все данные локально? Возможно нет. ИМО, вы можете работать с ответом только после его получения, например создавать предметы и в зависимости от job number 1 звонить next() на них.

...