如何在firestore中进行某种连接查询

时间:2018-01-08 11:41:22

标签: angular typescript firebase angularfire2 google-cloud-firestore

我试图在基于uid的firestore中的两个不同集合之间进行某种连接。我有评论集合,每个评论都有一个uid。我想使用该uid来获取用户详细信息,例如username, photoURL

getUsersReviews(userId){
      const reviewsRef = this.afs.collection('users-reviews', ref => ref.where('uid', '==', userId) );
      reviewsRef.switchMap(reviews => {
        let userObservables = reviews.map(status => this.afs.doc(`users/${userId}`))
        return Observable.combineLatest(...userObservables)
          .map((...users) => {
            reviews.forEach((review, index) => {
              review.username = users[0][index].username;
              review.avatar = users[0][index].photoURL;
            });
            return reviews;          
          });
      });
    }

我怎样才能让它发挥作用?上述代码不适用于switchMap在firestore集合中不存在的错误。

 error TS2339: Property 'switchMap' does not exist on type 'AngularFirestoreCollection<{}>'.

即使导入了switchMap。

1 个答案:

答案 0 :(得分:0)

AngularFirestoreCollection不是Observable,因此不会有switchMap mehtod。请参阅此处的实施: https://github.com/angular/angularfire2/blob/a13bf9b10e78dc74a1bfe61fea22480d2da859c1/src/firestore/collection/collection.ts#L45

使用snapshotChanges的{​​{1}}或stateChanges方法获取AngularFirestoreCollection,您可以使用Observable