【问题标题】:Create users with custom uid as key with React Native Firebase使用 React Native Firebase 创建具有自定义 uid 作为键的用户
【发布时间】:2021-12-20 18:34:56
【问题描述】:

我正在使用 react-native-firebase,我通常希望在表的 JSON 对象上使用自定义键。我已经搜索过,我知道我可以使用set 方法而不是push 来完成此操作。我的问题是在创建新用户时。

React-native-firebase 使用函数 signInWithEmailAndPassword(email,password) 自动创建一个具有随机 ID 的新用户,例如 9dBqfh5yfbd2dMGIieIe3tPs2ba2。现在,由于我习惯了 mySQL 数据库结构,本能地我想使用数字键,甚至用户名作为 ID。但是,我不确定将 uid 存储在数据库中的正确方法是在对象的键上,还是在对象内部的 uid 属性上。

除了使用管理 SDK 之外,还有其他方法吗?它当然需要服务器并且不能在我的应用程序上本地运行来实现这一点?

【问题讨论】:

  • 自定义 UID 只能由 Admin SDK 设置,不能由客户端设置。虽然您可以自己将这些数字 ID 存储在数据库中,但至少在 Firestore Limitations of using sequential ids in Cloud Firestore 中这不是一个好主意。
  • 听起来像是一个答案@Dharmaraj :)

标签: react-native firebase-authentication react-native-firebase


【解决方案1】:

您可以在创建用户时仅使用 Admin SDK 设置自定义 UID。 if 必要时,您可以将随机 ID 和整数以及其他用户信息存储在数据库中。例如,如果您使用 Firestore,则文档可能类似于:

{
  uid: 'firebase_auth_id',
  num: 1,
  ...otherUserInfo
}

现在由于我习惯了 mySQL 数据库结构,本能地我想使用数字键,甚至用户名作为 ID

在 NoSQL 数据库中使用这种随机 ID 而不是整数(如 SQL 中的 UUID 作为键)是很常见的。存储此类顺序 ID 可能会导致 hotspots,并且不建议像 Firestore 的 documentation 中所述。 如果您需要将 ID 转换为整数以进行查询/排序,则可以改为存储 createdAt Timestamp 字段。

【讨论】:

  • 感谢@Dharmaraj 的回答。那我就用 NoSQL 的方式来做吧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-09
  • 2020-03-20
  • 1970-01-01
  • 1970-01-01
  • 2017-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多