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