JSON / Firebase数据结构

时间:2016-03-11 03:03:37

标签: ios json firebase

我已经大致了解了如何使用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。如果这不是我用来制作用户的内容,那么引用给定用户并访问其信息的正确设置是什么?

1 个答案:

答案 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来提高可读性。