如何基于userDoc中的document_Ids数组获取特定文档

时间:2019-03-26 11:56:05

标签: firebase nosql google-cloud-firestore nosql-aggregation

我正在使用Cloud Firestore。我有2个集合,一个包含用户的“用户”集合,一个包含比赛的“竞赛”集合。

用户文档包含一些用户信息和一个Competition_Ids数组。我想阅读所有基于Competition_Ids数组的比赛。

正在使用angular和angularfire2创建该应用程序。 目前,我根据creator_id == auth.uid来查询我的比赛集合。

这以很多不必要的阅读为结尾,我宁愿避免。

下面显示的代码是我要创建的功能,因此我只能阅读特定的文档。

getMyCompetitions(userCompetitions: []) {
    this.competitionColection = this.db.collection<Competition>(
      'competitions',
      ref => {
        firebase.firestore.FieldPath.documentId();
        return ref.where(
          firebase.firestore.FieldPath.documentId(),
          '==',
          userCompetitions.forEach(competition => {
            return competition['competitionId'];
          })
        );
      }
    );

    return this.competitionColection.snapshotChanges().pipe(
      map(actions =>
        actions.map(a => {
          const data = a.payload.doc.data();
          const id = a.payload.doc.id;
          console.log(data);
          return { id, ...data };
        })
      )
    );
  }

预期结果是:在userDoc内的competititons_Ids数组中返回用户引用的所有文档。

实际结果是:“ ERROR FirebaseError:函数Query.where()需要有效的第三个参数,但未定义”

0 个答案:

没有答案