【问题标题】:firebase multi-location updates user authentication and databasefirebase 多位置更新用户身份验证和数据库
【发布时间】:2017-09-21 03:33:38
【问题描述】:

我有一个表格,可以用电子邮件、密码、全名和电话号码注册新用户。

如果成功,我可以使用firebase.auth().createUserWithEmailAndPassword 创建新用户。然后我使用firebase.database().ref('users/..').set(..)将全名和电话号码保存到firebase数据库。

但是如果保存到数据库的处理发生错误(例如通过规则 write:false),我仍然在用户身份验证中创建了一个用户标识符。所以存在一个没有电话号码和完整号码的用户。

我怎样才能多位置插入用户身份验证和数据库。如果这两个失败的firebase之一自动拒绝插入新标识符并插入数据库。 (只有两个都成功时才返回成功)。

【问题讨论】:

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


    【解决方案1】:

    无法使组合的 Auth 和 Database 操作成为原子操作。如果你想成为原子,你应该只使用一种服务:数据库身份验证。

    要使这个原子化,您可以将用户名、密码、全名和电话号码传递给 Cloud Functions 中的 HTTP 函数。然后creates a user with the email and password,然后将全名和电话号码写入数据库。

    但请注意,这仍然不能保证是原子的:您在手机上预期的相同故障可能会在服务器上发生。虽然机会要小得多,但不能保证。

    这意味着您需要确保您的代码足够健壮,可以处理缺少全名和电话号码的情况。如果您需要在服务器端执行此操作,如果您将跨产品代码留在客户端,它也将同样工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      • 2018-08-21
      • 2020-05-10
      相关资源
      最近更新 更多