2

所以我的应用程序有许多用户之间共享的“对话”。“对话”有很多“用户”。

我可以在特定对话中使用模拟器获得授权“.read”的作者,但我不确定如何在以用户身份登录时获取对话列表——我不能.on("child_added")在“对话”中使用,因为 .read 在“对话”中是不允许的,只能在他们的一些孩子上使用,具体取决于登录的用户。

我应该如何进行?

谢谢!

4

1 回答 1

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 。

于 2013-09-03T17:30:59.200 回答