首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firestore/Rxfire -查询集合然后订阅子可观测数据数组

Firestore/Rxfire -查询集合然后订阅子可观测数据数组
EN

Stack Overflow用户
提问于 2020-04-29 00:31:58
回答 1查看 294关注 0票数 1

我有一个存储消息的chat集合。每条消息都附加了一个userUid。我要完成的是以下几点:

  1. 查询chat集合以获取每个消息的数组
  2. 遍历每条消息并查询相应的用户文档,以便将用户信息附加到消息中。
  3. 有一个subscribe,它现在提供原始消息数组以及添加的信息。
  4. (如果可能的话- combineLatest?)每次添加消息时,最好只查询新消息的用户集合。

下面是我目前正在使用的代码片段:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-29 06:09:02

明白了!

代码语言:javascript
复制
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))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61492280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档