下面是我的数据库结构firebase。我只有登录用户 ID。
User
-userId
-Name
-age
-groups
groupId1:true
groupId2:true
Group
-groupId
-name
-desc
-UserId
-UserId1:true
-UserId2:true
我想列出用户所属的所有组的详细信息。我的方法是,
- 通过检查 User 的索引来查找我的用户所属的所有组。
- 使用我们从步骤 1 中获得的 groupid 列表,从 Groups 中获取组的详细信息。
还有其他更好的建议吗?
根据您当前的数据结构,您确实必须执行两步方法:
- 加载组 ID 列表
- 加载每个组的元数据(例如名称)
这称为客户端加入,在 Firebase 中很常见。
或者,您可以在每个用户的组下复制有关每个组的最重要信息。例如。
UserGroups
User1
Group1: "This is the first group"
Group2: "This is the second group"
正如您在此示例中看到的,我们替换了true
标记为该组的实际名称。这样做的优点是,对于简单的用例,您只需阅读此列表,而不必进行客户端连接。缺点是您需要决定是否/如何保持数据同步。我在这里写了一个带有选项的答案:如何在 Firebase 中写入非规范化数据 https://stackoverflow.com/questions/30693785/how-to-write-denormalized-data-in-firebase
请注意,您的数据模型并未完全扁平化,因为您正在混合实体类型。我建议将每个用户的元数据(他们的名称和描述)从“用户所属的组列表”中分离出来。这给你留下了四个顶级列表:
Users
Groups
UserGroups
GroupUsers
这是多对多关系的常见模式,我在这里进一步描述:Firebase 中的多对多关系 https://stackoverflow.com/questions/41527058/many-to-many-relationship-in-firebase
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)