我有一张表格,可以通过电子邮件,密码,全名和电话号码注册新用户。
如果成功,我可以使用firebase.auth().createUserWithEmailAndPassword
创建新用户。然后我使用firebase.database().ref('users/..').set(..)
将全名和电话号码保存到firebase数据库。
但是如果对数据库的保存处理发生错误(例如,通过规则写入:false),我仍然在用户身份验证中创建了一个用户标识符。因此,用户不存在电话号码和完整号码。
如何进行多位置插入用户身份验证和数据库。如果其中一个失败的firebase自动拒绝插入新标识符并插入数据库。 (如果两次成功,处理只会返回成功。)
答案 0 :(得分:2)
无法使组合的Auth和数据库操作成为原子。如果您想成为原子,您应该只使用一个服务:数据库或身份验证。
要制作此原子,您可以将用户名,密码,全名和电话号码传递给云功能中的HTTP功能。然后creates a user with the email and password,然后将全名和电话号码写入数据库。
但请注意,这仍然不能保证原子性:您在电话上预期的同样故障可能发生在服务器上。虽然机会小得多,但并不能保证。
这意味着您需要确保您的代码足够强大,以处理缺少全名和电话号码的情况。如果您需要在服务器端的情况下执行此操作,如果您将交叉产品代码留在客户端上,它也将起作用。