【问题标题】:When use Firebase in Android, how to get a specific data by child value在Android中使用Firebase时,如何通过子值获取特定数据
【发布时间】:2018-03-20 12:24:05
【问题描述】:

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

表组有子“currentMembers”

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

Query query = FirebaseDatabase.getInstance()
            .getReference()
            .child("groups").orderByChild("currentMembers").equalTo(currentUserID);

    FirebaseRecyclerOptions<UserGroup> options =
            new FirebaseRecyclerOptions.Builder<UserGroup>()
                    .setQuery(query, UserGroup.class)
                    .build();

但它什么也没返回,我该如何解决?

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    您正在寻找:

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

    但这不会很好地扩展,因为您需要为每个成员显式定义一个索引。

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

    users
      $uid
        currentGroups
          $groupId: true
    

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

    如果您有两种实体类型 Users 和 Groups 并且它们之间存在多对多关系,您最终会得到四个顶级列表:

    users
    groups
    userGroups
    groupUsers
    

    另请参阅我对这些相关问题的回答:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2022-01-16
      • 2017-08-22
      • 1970-01-01
      • 2019-01-28
      相关资源
      最近更新 更多