我在 firestore 中有一个保存消息的 chat
集合。每条消息都附加有一个userUid
。我想要完成的任务如下:
查询
chat
集合中每条消息的数组遍历每条消息并查询相应的用户文档 为了将用户信息附加到消息中
拥有一个
订阅
,现在可以提供原始消息数组以及添加的信息(如果可能 - combineLatest? )每次添加消息时,最好只在用户集合中查询新消息
以下代码片段是我目前正在处理的内容:
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))
我与一位 friend 合作提出了以下两个可行的解决方案,但在为我的应用程序配置时都不起作用
最佳答案
明白了!
collectionData(db.collection('chat'))
.pipe(
switchMap(messages =>
combineLatest(
messages.map(m =>
docData(db.collection('users').doc(m.userUid)).pipe(
map(user => ({ ...user, ...m }))
)
)
)
)
)
.subscribe(enhancedMessages => console.log(enhancedMessages))
关于javascript - Firestore/Rxfire - 查询集合然后订阅子可观察数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61492280/