У меня есть коллекция chat
в firestore, которая содержит сообщения. К каждому сообщению прикреплено userUid
. sh я хотел бы выполнить следующим образом:
Запрос коллекции chat
для массива каждого сообщения
Выполните итерацию по каждому сообщению и запросите соответствующего пользователя, выполните c, чтобы добавить информацию о пользователе в сообщение
Имейте один единственный subscribe
, который теперь предоставляет исходный массив сообщений с добавленная информация
(если возможно - combLatest? ) каждый раз при добавлении сообщения было бы идеально запрашивать только пользовательскую коллекцию для нового сообщения
Следующий фрагмент - это то, с чем я сейчас работаю:
const chatRef = db.collection('chat')
const messageUser$ = collectionData(chatRef, 'id')
.pipe(
switchMap(messages => {
return forkJoin(...messages.map(m => {
const userRef = db.collection('users').doc(m.userUid)
return docData(userRef)
.pipe(
map(user => ({ ...user, ...m }))
)
}))
})
)
messageUser$.subscribe(data => console.log('data', data))
Я работал с другом, чтобы придумать два рабочих решения ниже, но ни один не работал когда настроено для моего приложения
https://stackblitz.com/edit/rxjs-nzn11o