Firestore从doc的内部数组中获取数据

时间:2018-02-20 09:46:34

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

我知道如何像这样查询简单的集合/ doc:

const querySnapshot = await 
this.authenticationProvider.firestoreDb.collection("members").where("userId", 
"==", this.authenticationProvider.user.uid).get();

但是我可以使用firestore上的条件从内部数组中获取数据吗? 您可以看到我需要检查projects/memberList数组的位置,之后需要搜索email。我能这样做吗?

enter image description here

1 个答案:

答案 0 :(得分:2)

你不能用数组做到这一点。您需要将数据结构化为对象,其中每个键都是userId。 Firestore将索引对象键,允许您对它们运行查询。您的数据结构可能如下所示:

firestore

然后你可以运行这样的查询:

const userId = this.authenticationProvider.user.uid
ref.collection('members').where(`memberList.${userId}`, '==', true)

您甚至可以在每个userId键(例如另一个对象)下嵌入其他数据,然后获取该用户所属的所有文档,如下所示:

ref.orderBy(`memberList.${userId}`)