目前我正在为Firebase数据库开发数据库布局。我正在浏览许多关于布局应该如何看的不同教程,但我对于什么是正确的我感到有些困惑。
我不确定用户应该存储的内容,让我举个例子:
{
"users": {
"alanisawesome": {
"nickname": "Alan The Machine"
},
"gracehop": {
"nickname": "Amazing Grace"
}
}
}
在Firebase Legacy文档的上述示例中,他们按用户名存储用户。然而在另一个例子中,我发现了以下内容:
{
"users": {
"123": {
"name": "Kato"
},
"234": {
"name": "Anant"
}
}
}
这里他们使用UID存储用户。然后,您只需push()
个新用户,其ID就是随机密钥,例如以下-JRHTHaKuITFIhnj02kE
。
以上哪项是存储用户的最佳方式?用户名,自定义UID或随机生成的密钥?
答案 0 :(得分:12)
当您拥有一个按时间顺序排序的集合时,Firebase push id非常棒,其中单个项目没有自然键。所以列出了博客文章,聊天消息等。
但是当项目具有自然键时,通常最好将它们存储在该自然键下。用户拥有唯一ID,通常称为uid
。除非您有理由不这样做,否则请将用户存储在uid
下。通过将它们存储在uid
下,您可以轻松查找给定用户的数据:ref.child('users').child(user.uid)
。如果您将用户存储在生成的密钥(例如推送ID)下,则必须执行查询才能找到相同的记录。
您从文档中获得的示例使用的是不同的命名方案。原因是推送ID和UID都会导致比我们在那时的文档中更多的混淆。这就是为什么我们在这些情况下选择简短易读的键。