我有一个用于注册新用户的表格,其中包含电子邮件、密码、全名和电话号码。
我可以用firebase.auth().createUserWithEmailAndPassword
如果成功则创建新用户。然后我用firebase.database().ref('users/..').set(..)
将全名和电话号码保存到 firebase 数据库。
但是,如果保存到数据库的处理发生错误(例如,根据规则 write:false),我仍然在用户身份验证中创建了一个用户标识符。因此,存在一个没有电话号码和完整号码的用户。
我怎样才能多位置插入用户身份验证和数据库。如果这两个失败之一,Firebase 自动拒绝插入新标识符并插入数据库。 (如果两者都成功,则处理仅返回成功)。
无法使组合的身份验证和数据库操作原子化。如果你想要原子性,你应该只使用一项服务:数据库or验证。
要实现此原子性,您可以将用户名、密码、全名和电话号码传递给 Cloud Functions 中的 HTTP 函数。那么这个使用电子邮件和密码创建用户 https://firebase.google.com/docs/auth/admin/manage-users#create_a_user,然后将全名和电话号码写入数据库。
但请注意,这仍然不能保证是原子的:您在电话上预期的相同故障也可能发生在服务器上。虽然可能性要小得多,但也不能保证。
这意味着您需要确保您的代码足够强大,能够处理缺少全名和电话号码的情况。如果您需要在服务器端执行此操作,那么如果您将跨产品代码保留在客户端上,它也将发挥相同的作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)