因此,我的应用程序具有许多用户共享的“对话”。 “对话”有很多“用户”。
我能够在特定对话中使用模拟器授权作者获得“.read”,但我不确定如何以用户身份登录时获取对话列表 - 我无法使用{ {1}}关于“对话”,因为.read不允许在“对话”中使用。仅限于某些孩子,具体取决于登录用户。
我该怎么办?
谢谢!
答案 0 :(得分:3)
我们不建议使用安全规则来实现对记录的过滤。您可以在全局列表下存储会话列表,但是然后将这些会话的ID存储在可以访问它们的每个用户下。这意味着您还必须确保在发生更改时更新每个用户的会话列表。
/conversations
<conversation-id-1>
<conversation-id-2>
/users
<user-1>
/conversations
<conversation-id-1>: true
<user-2>
/conversations
<conversation-id-2>: true
在/ users / user1 / conversations上执行.on(“child_added”)将允许您访问用户有权访问的所有会话。确保在顶级对话列表中正确设置权限。
有关如何在Firebase中构建数据的更多背景信息,请参阅https://www.firebase.com/blog/2013-04-12-denormalizing-is-normal.html。