учитывая хранилище коллекций, как восстановить данные из подгруппы для каждого документа? - PullRequest
0 голосов
/ 30 мая 2020

с учетом коллекции в хранилище типа: collection (chat) .do c (id) .collection (messages) .do c (id) Мне нужно восстановить все чаты и в том же массиве объекты также имеют последние отправленные сообщения. Как я могу объединить два запроса firestore в один метод с операторами rx js?

первый запрос:

this.afs.collection(conversationId, list =>
            list.where('store_code', '==', storeCode)
        ).snapshotChanges().pipe(
            map(resp => resp.filter((chat: any) => chat.payload.doc.data().assignee !== '')),
            map(resp => resp.filter((chat: any) => chat.payload.doc.data().assignee !== userId)),
            map(resp => {
                    return resp.map(chat => {
                        return {...chat.payload.doc.data() as ActiveChat, idChat: chat.payload.doc.id}
                    })
                }
            ),
        )

второй запрос:

this.afs.collection(conversationId)
     .doc(chat.idChat)
     .collection('messages', ref => ref.orderBy('message_timestamp', 'asc').limit(1))
     .valueChanges()

I ожидайте финального объекта вроде этого: {... chat, last_message: message}

...