我已经大致了解了如何使用Firebase创建和检索数据。但是,我不是100%肯定的是引用不同用户的最佳方式。在他们的网站上,有一个保存用户数据的例子,它导致了这样的json树:
{
"users": {
"alanisawesome": {
"date_of_birth": "June 23, 1912",
"full_name": "Alan Turing"
},
"gracehop": {
"date_of_birth": "December 9, 1906",
"full_name": "Grace Hopper"
}
}
}
令我困惑的是“alanisawesome”和“gracehop”引用。最初我认为我应该用创建用户时创建的唯一ID替换它们,如:
"users": {
"12349WEF": {
"date_of_birth": "June 23, 1912",
"full_name": "Alan Turing"
}
但后来我遇到了另一个JSON树示例,它具有深度下的UID作为其他个人信息,如他们的姓名,电子邮件等(目前尚不清楚个人数据的父亲是什么)。同样来自Firebase的文档的是一个生成带时间戳ID的方法childByAutoId。如果这不是我用来制作用户的内容,那么引用给定用户并访问其信息的正确设置是什么?
答案 0 :(得分:1)
令我困惑的是“alanisawesome”和“gracehop”引用。最初我认为我应该用制作用户时创建的唯一ID替换它们
在Firebase数据库中存储用户信息的最常用方法是使用以下结构:
/users
$uid
full_name: "Alan Turing"
date_of_birth: "June 23, 1912"
我在上面的代码段中使用$uid
的位置,您将使用Firebase身份验证为您生成的uid。这是一个长而不透明的字符串。例如"e836f712-4914-41df-aa80-5ade6b8b7874"
。由于这不是非常易读,因此Firebase文档倾向于使用“假”uid,例如您引用的示例中的"alanisawesome"
和"gracehop"
。有关更多信息,请参阅storing user data section in the Firebase documentation。请记住,所有这些只是一个(经常使用的)约定。您需要弄清楚它是否适用于您的用例并在需要时进行调整。
同样来自Firebase的文档是一个生成带时间戳ID的方法childByAutoId。如果这不是我用来制作用户的内容,那么引用给定用户并访问其信息的正确设置是什么?
如果项目具有自然键,则通常将它们存储在该键下。用户由其用户ID(Firebase API中的uid)标识,因此通常存储在数据库中的该ID下。如果您还需要通过其他属性查找用户,则需要创建一个所谓的索引,将其他属性映射到自然/主键。即。
/usernames
"Alan Turing": "alanisawesome"
"Grace Hopper": "gracehop"
你会注意到我再一次使用这个例子中的“假”uid来提高可读性。