所以我的应用程序有许多用户之间共享的“对话”。“对话”有很多“用户”。
我可以在特定对话中使用模拟器获得授权“.read”的作者,但我不确定如何在以用户身份登录时获取对话列表——我不能.on("child_added")
在“对话”中使用,因为 .read 在“对话”中是不允许的,只能在他们的一些孩子上使用,具体取决于登录的用户。
我应该如何进行?
谢谢!
所以我的应用程序有许多用户之间共享的“对话”。“对话”有很多“用户”。
我可以在特定对话中使用模拟器获得授权“.read”的作者,但我不确定如何在以用户身份登录时获取对话列表——我不能.on("child_added")
在“对话”中使用,因为 .read 在“对话”中是不允许的,只能在他们的一些孩子上使用,具体取决于登录的用户。
我应该如何进行?
谢谢!
我们不建议使用安全规则来实现记录过滤。您可以将对话列表存储在全局列表下,然后将这些对话的 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 。