【问题标题】:Referencing authentication db data in real time db firebase实时引用身份验证数据库数据 db firebase
【发布时间】:2018-01-28 20:51:16
【问题描述】:

我正在使用 firebase 创建一个具有登录和注册功能的网站。我已经使用firebase“身份验证”数据库来存储注册用户。但是,“身份验证”数据库不存储除电子邮件ID、密码和自动生成的UUID之外的任何内容。

我需要为用户存储更多数据,例如用户名、个人资料图片等。我也会使用 firebase 的“实时”数据库。

我的问题是这样做的最佳做法是什么。我是否应该使用 UID 作为“身份验证”数据库中的主键并将其作为外键保存在我的实时数据库中,如下所示:

身份验证数据库:

Record 1 - Email:abc@test.com; password:somepassword; UID:UID1
Record 2 - Email:abcd@test.com; password:somepassword; UID:UID2

实时数据库结构:

users
|
|--UID1
   |
   |---Name:Amanda
   |---Surname:Waller
   |---age:30
|--UID2
   |
   |---Name:MyName
   |---Surname:Mysurname
   |---age:39

或者使用电子邮件 ID 作为主键而不是使用 Firebase 自动生成的 UID 是否更好。因为在sql中我们一般不使用自动生成的id作为主键。

【问题讨论】:

  • 除了 Jen 的出色回答:您提供的 [user name]() 和 [profile pic]() 示例也可以直接存储在 Firebase 身份验证中。有关这两个示例,请参阅 Firebase 文档:firebase.google.com/docs/auth/android/…(Android,但在 Web 和 iOS 上的工作方式相同)。

标签: firebase firebase-realtime-database firebase-authentication


【解决方案1】:

最好使用 UID。一方面,您不能在键中使用句点,因此如果您使用电子邮件作为键,则必须通过将它们替换为其他字符来处理它。此外,某些形式的身份验证不需要电子邮件,例如 Twitter。因为一旦用户通过身份验证,您就可以轻松获得 UID,这就是我的建议。

【讨论】:

  • 我还有一个管理员用户,需要对所有用户进行完全访问。例如,管理员将搜索给定用户并获取其数据。为此,我必须使用电子邮件对 UId 执行反向查找,对吗?
猜你喜欢
  • 2017-12-26
  • 1970-01-01
  • 2021-01-22
  • 2018-09-17
  • 1970-01-01
  • 1970-01-01
  • 2019-04-19
  • 1970-01-01
  • 2018-07-15
相关资源
最近更新 更多