gpt4 book ai didi

java - 使用 Auth 创建用户并同时写入 Firestore

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:56:17 25 4
gpt4 key购买 nike

我有一个场景,我需要使用 Auth 创建一个用户并将更多信息(例如名称和业务类型)添加到 Firestore 数据库。 Firestore 作为事务/批处理操作,但它仅适用于 Firestore。

有没有一种方法可以让我执行 Auth 操作,例如与 Firestore 数据插入一起创建。两种操作都必须成功或失败。现在我将它们链接在一起,但我会担心其中一个失败而另一个成功需要优雅地处理。

谢谢

最佳答案

当您实现 Firebase 身份验证时,您可以使用 addOnCompleteListeneraddOnSuccessListener 并实现 isComplete()isSuccessful( ) 方法。在其中一种方法中,您需要在 Firestore 数据库中创建用户。换句话说,只有在身份验证成功时,您才会创建用户。因此,如果 isSuccessful() 要么该方法之一下的所有操作都成功,要么都不应用。

这 2 种方法之间的区别在于,当任务所代表的工作完成时,我们可以认为该任务是 complete,而不管它是成功还是失败。可能有也可能没有错误,但我们需要检查一下。当任务所代表的工作按预期完成且没有错误时,任务成功

总而言之,没有办法获得批量解决方案。这是因为有 2 个独立的操作。因此,为了能够在数据库中写入用户详细信息,您需要首先成功通过身份验证。如果您想要回滚,则需要在将用户详细信息写入数据库时​​再次使用 addOnCompleteListener。如果你得到一个错误,就让用户出局。如您所述,没有可以处理身份验证和数据库写入操作的事务/批处理操作。

编辑:

既然你说你正在使用 Firebase 身份验证,你也可以使用一个函数,用 Cloud Function 编写来达到你的目标。您可以编写一个函数,它会在您的项目中每次发生某些事情时运行。这些“东西”之一是 creation of an user .换句话说,您可以在每次创建新用户时执行您的逻辑。这是一个例子:

exports.updateUserCount = functions.auth.user().onCreate((user) => {
//Do what you need to do
});

此外,您可以在删除用户时做同样的事情,但使用 onDelete() 方法注册一个函数。

这将非常快,因为没有与用户设备的交互。请查看有关 Firebase Cloud Functions 的更多信息.

关于java - 使用 Auth 创建用户并同时写入 Firestore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49100731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com