在Android中使用Firebase时,如何按子值获取特定数据

时间:2018-03-20 01:52:00

标签: android firebase firebase-realtime-database

这就是我的数据库的样子。

表组有孩子" currentMembers" The table group has child "currentMembers"

在" currentMember"中,第一个字符串是userID,下一个字符串是布尔值。我想选择包含特定用户ID的组。 我的代码如下所示。

html, body {
  height: 100%;
  margin: 0;
  padding: 0;
}

但它什么也没有回复,我怎么能解决它?

1 个答案:

答案 0 :(得分:0)

您正在寻找:

FirebaseDatabase
  .getInstance()
  .getReference()          
  .child("groups")
  .orderByChild("currentMembers/"+currentUserID)
  .equalTo(true);

但是这不会很好地扩展,因为你需要为每个成员明确定义一个索引。

这通常意味着您需要调整数据模型以包含允许反向查找的映射。因此,该节点允许查找特定用户的组列表。

users
  $uid
    currentGroups
      $groupId: true

另请注意,您在树的单个分支中嵌套了多个实体类型,这对Firebase数据库来说是一种反模式。

如果您有两个实体类型用户和组以及它们之间的多对多关系,那么您最终会得到四个顶级列表:

users
groups
userGroups
groupUsers

另见我对这些相关问题的回答: