我正在开发一款使用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的设置。并且不应该将配置文件设置为与设置相同的方式吗?
可能没有更好的选择,但我有兴趣听到想法。
非常感谢
答案 0 :(得分:6)
uid 是唯一的ID,因此在像/ users节点这样的情况下使用uid作为父节点名称非常棒。
此外,如果每个用户都有自己的设置,那么将它们包含在/ users / uid / node中会很酷。
'奉承更好'是座右铭,但有时候扁平化实际上可能使事情过于复杂化。在这种情况下,用户登录并读取其设置。完成。您不会查询它或进行任何类型的交叉引用查找,因此请将其与其他用户数据保持一致。
一般来说,你的方向正确:
使用自动创建的ID是一种很好的做法 - 这允许您取消节点名称与其包含的数据的关联。
电子邮件地址和人名之类的东西,实际上任何可能发生变化的东西都不是最好的节点名称,因为它们可能会在您的结构中的其他200个地方引用,例如,如果电子邮件地址发生变化,你必须找出200个地方并进行更新。 (电子邮件地址也有特殊字符,因此您必须按摩它们才能使它们正常工作。)
使用自动生成的节点名称,您可以更改一次。