我正在使用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()需要有效的第三个参数,但未定义”