以角度4+制作公开个人资料和私人资料

时间:2017-10-13 23:07:20

标签: angular firebase firebase-realtime-database angular-cli

我需要帮助才能想到这个问题,这是我的firebase架构。

enter image description here

我需要查看个人资料但是公开,如何制作它?

那么,您如何看待架构以及一个用户如何进行对话?

我认为会话节点可以保留在用户节点之外,并且每个用户都可以引用对话。哪一个选择?

1 个答案:

答案 0 :(得分:1)

您在单个根目录下嵌套多种数据类型,这是大多数Firebase实时数据库开发人员建议的。其中一些最重要的原因是:

  1. Firebase将始终读取整个节点,因此您无法在不阅读所有会话的情况下阅读用户的属性。在许多情况下,这是浪费的,例如当您只想显示用户名列表时。
  2. 授予用户对节点的读取权限后,他们可以访问该节点下的所有数据。您不能在较低级别取消此权限。这意味着在您的情况下,任何能够阅读用户个人资料信息的人也可以阅读他们的所有对话。这可能不是你想要的。
  3. 您可以尝试通过向用户授予用户特定属性的读取权限来解决最后一个问题,因此/Users/$uid/name等可以通过这种方式读取名称,而不是对话。在单个用户节点上,这确实有效。但是使用此结构,您无法获得用户配置文件列表,因为您没有/Users的读取权限。
  4. 对共享内容进行建模的常用方法是将会话和用户配置文件拆分为单独的顶级节点,每个节点都在用户的UID上键入:

    Users
      $uid
        name: "Matias Celiz"
        gender: "..."
    Conversations
      $uid
        ...
    

    如果您需要单独的公开个人资料信息和私人个人资料信息,请添加另一个顶级节点以拆分这两个:

    Users
      $uid
        name: "Matias Celiz"
        gender: "..."
    Profiles
      $uid
        name: "Matias Celiz"
    Conversations
      $uid
        ...