【问题标题】:How to do some sort of join query in firestore如何在firestore中进行某种连接查询
【发布时间】:2018-06-17 09:21:01
【问题描述】:

我正在尝试基于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 被导入。

【问题讨论】:

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


    【解决方案1】:

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

    使用AngularFirestoreCollectionsnapshotChangesstateChanges 方法得到Observable,您可以在其中使用switchMap

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 2019-03-22
      • 2021-07-29
      • 2022-01-25
      • 1970-01-01
      • 2022-01-05
      • 2022-01-14
      相关资源
      最近更新 更多