Firebase存储数据最佳实践

时间:2016-02-22 19:06:43

标签: javascript angularjs database performance firebase

我正在开发一款使用Firebase的应用。

您知道存储数据的最佳方式吗?

我已阅读有关构建数据的最佳实践的文档,但未提供有关ID的建议。

使用我的应用程序,一旦用户注册了他们的用户信用点,就会添加它并为它们创建一个配置文件。

这将存储到“个人资料”文档中,如下所示:

profile
      -> uniqueId (generated by Firebase)
                 -->  uid (unique Firebase generated uid)
                 -->  email
                 -->  password

然而,在我的下一个名为“设置”的文档中,这个设置不同......

唯一ID不存在,它使用像这样的uid

settings
        ->  uid (Firebase user Id - not a unqiue id)
               -->   setting1
               -->   setting2
               -->   setting3

因此,就最佳做法而言,让Firebase生成唯一ID然后拥有uid并不是更好吗?喜欢个人资料文件?

或者我这样做了吗?

Firebase文档建议尽可能保持结构平整。所以我的想法是。但后来我担心索引。是否会出现性能问题?

此外,如果最好有这样的设置文件...

settings
         -> uniqueId
                -->     uid (user Id)
                -->     settings1
                -->     settings2

然后,它是否过度复杂化了如何访问特定userId的设置。并且不应该将配置文件设置为与设置相同的方式吗?

可能没有更好的选择,但我有兴趣听到想法。

非常感谢

1 个答案:

答案 0 :(得分:6)

uid 是唯一的ID,因此在像/ users节点这样的情况下使用uid作为父节点名称非常棒。

此外,如果每个用户都有自己的设置,那么将它们包含在/ users / uid / node中会很酷。

'奉承更好'是座右铭,但有时候扁平化实际上可能使事情过于复杂化。在这种情况下,用户登录并读取其设置。完成。您不会查询它或进行任何类型的交叉引用查找,因此请将其与其他用户数据保持一致。

一般来说,你的方向正确:

使用自动创建的ID是一种很好的做法 - 这允许您取消节点名称与其包含的数据的关联。

电子邮件地址和人名之类的东西,实际上任何可能发生变化的东西都不是最好的节点名称,因为它们可能会在您的结构中的其他200个地方引用,例如,如果电子邮件地址发生变化,你必须找出200个地方并进行更新。 (电子邮件地址也有特殊字符,因此您必须按摩它们才能使它们正常工作。)

使用自动生成的节点名称,您可以更改一次。