首页 文章

来自Firebase的隐藏数据[重复]

提问于
浏览
3

这个问题在这里已有答案:

我一直在尝试(没有成功)从Firebase数据库中检索组中的用户列表;我想知道它是否可能基于我的数据结构(如下),或者问题是我的快速代码(也在下面)

这是我的Firebase结构:

Users
---- <UserID>
---------- Username
---------- Email
---------- etc...
Groups
---- <GroupID>
---------- GroupName
---------- CreationDate
---------- GroupAdmin
---------- etc...
UsersInGroups
------- UserID
---------- GroupID : true   <---- User is in Group

通过上面的数据结构,我可以在特定的 group 中检索所有 users 的列表吗?

目前我的swift代码如下:

ref = Database.database()reference(withPath: "UsersInGroups")
handle = ref.queryOrdered(byChild: <userID>).queryEqual(toValue: true).observe(.value, ....

你可以想象,它并没有拉 userID 在哪里 groupID = true

最后,我想知道这是否可行:我想获得用户所做的所有 GroupEntries 的列表 .

Firebase结构如下:

GroupEntry
-------- <GroupID>
--------------- <entryID> : <userID>

这是一个动态且唯一的字符串(例如3:8),userID是创建条目的用户 .

快速代码如下:

ref = Database.database()reference(withPath: "GroupEntry")
handle = ref.child(<groupID>).queryEqual(toValue: <userID>).observe(.value, ...

任何人都可以提供任何帮助!?

1 回答

  • 2

    您可以使用以下位置表示组和用户之间的关系:

    • group-users/$groupId/$uid

    • user-groups/$uid/$groupId

    存储两种关系的反转将为您提供更多的查询能力 . 要检索组中的用户,您需要观察 group-users/$groupId 处的子项 - 另一方面,您可以通过观察 user-groups/$userId 处的子项来获取用户所在的组 .

    组条目可以用另外两个位置表示:

    • group-entries/$groupId/$entryId

    • user-entries/$userId/$entryId

    您可以通过观察 user-entries/$userId 来获取用户所做的所有条目;您可以通过包含条目 $groupId 的子项进行排序来进一步查询 .

    所有这些地点面临的挑战是维护它们 - 确保数据始终保持一致 . 这可以使用其中一个Firebase客户端SDK以某种手动方式进行,但您可以考虑使用 Cloud 功能创建更新数据库中相关位置的触发器 .

相关问题