Firebase rxjs:如何从Firestore获取相关数据

Firebase rxjs:如何从Firestore获取相关数据,firebase,rxjs,google-cloud-firestore,angularfire2,Firebase,Rxjs,Google Cloud Firestore,Angularfire2,我试图根据Firestore中的可观察对象返回的值获取一些相关数据 getChampionshipResults(minimumCompetionCount: number): Observable<User[]> { const usersWithResults = this.afs.collection<User>('users') .valueChanges() .map(users => {

我试图根据Firestore中的可观察对象返回的值获取一些相关数据

getChampionshipResults(minimumCompetionCount: number): Observable<User[]> {

    const usersWithResults = this.afs.collection<User>('users')
        .valueChanges()
        .map(users => {
            return users.map(user => {
                this.afs.collection<Result>('results', ref => ref
                    .where('userUid', '==', user.uid)
                    .orderBy('position', 'asc')
                    .limit(minimumCompetionCount))
                    .valueChanges()
                    .take(1)
                    .subscribe(results => {
                        user.results = results;
                    });
                return user;
            });
        })
        .do(el => console.log(el));

    return usersWithResults;
}
我认为问题的根源在于,内部可观测对象尚未完成,但我无法找到正确的rxjs运算符来完成我想要的操作

如有任何建议,将不胜感激。 谢谢

getChampionshipResults(minimumCompetionCount: number): Observable<User[]> {

    const usersWithResults = this.afs.collection<User>('users')
        .valueChanges()
        .map(users => {
            return users.map(user => {
                this.afs.collection<Result>('results', ref => ref
                    .where('userUid', '==', user.uid)
                    .orderBy('position', 'asc')
                    .limit(minimumCompetionCount))
                    .valueChanges()
                    .take(1)
                    .subscribe(results => {
                        user.results = results;
                    });
                return user;
            });
        })
        .do(el => console.log(el))

        // add sorting
        .map(users => {
            return users.sort((a, b) => {

                // this is undefined
                console.log(a.results);

                // simplified dummy sort
                return 1;
            });
        });

    return usersWithResults;
}