【问题标题】:Firestore Android Join CollectionsFirestore Android 加入集合
【发布时间】:2018-07-13 12:40:42
【问题描述】:
我有一个关于 Cloud Firestore 的问题:
我有一个集合组,它只保存组信息(名称、找到日期等)和一个 group_members 集合,它基本上有两个字段(group_id 和 user_id)
现在我需要获取用户所属的所有组。目前,我只是浏览group_members 集合并检查user_id 是否与当前登录的用户匹配。如果是这样,我将group_id 存储在一个列表中。之后,我只需使用列表中的 group_id 下载所有组。
我觉得有更好的解决方案,但我找不到。如果有人可以分享提示或解决方案,那就太好了。
【问题讨论】:
标签:
android
firebase
kotlin
google-cloud-firestore
【解决方案1】:
现在我需要获取用户所属的所有组。
为此,我建议您使用如下所示的数据库结构:
Firestore-root
|
--- group_members (collection)
|
--- uid (document)
|
--- user_groups (map)
|
--- group_id: true
|
--- group_id: true
要实际查询此结构,请使用以下代码行:
对于安卓:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
DocumentReference uidRef = rootRef.collection("group_members").document(uid);
uidRef.get().addOnCompleteListener(/* ... */);
对于 Kotlin:
val rootRef = FirebaseFirestore.getInstance()
val uidRef = rootRef.collection("group_members").document(uid)
uidRef.get().addOnCompleteListener(/* ... */)
最后只需简单地遍历 user_groups 映射并获取用户所属的所有组。