【问题标题】:How to write to a document and read the id of it within a single transaction in Firestore?如何在 Firestore 的单个事务中写入文档并读取它的 ID?
【发布时间】:2020-04-07 01:35:53
【问题描述】:

我正在做这种情况下的用户身份验证:

  1. vendor_type文档中读取,如果返回null(不存在)则继续交易,
  2. 使用.auth().createUserWithEmailAndPassword(email,password)创建新用户,
  3. 读取新用户 ID,
  4. 写信给vendor_type 记录一些新用户的详细信息,例如namesurnameuserId -->> userId 是问题,我如何在单个事务中创建用户并获取 ID,我什至可以这样做? ,
  5. 获取新创建的用户 ID,并使用该 ID 创建一个新的 vendor 文档。

到目前为止,我还没有任何代码可以发布,因为我不知道这是否可行,所以我没有开始。如果您有任何想法如何实现这一点,请告诉我。主要问题是在事务中获取用户 ID。

【问题讨论】:

  • 这里为什么需要交易?你想避免什么情况?
  • @DougStevenson 我改变了方法,现在我先注册新用户,然后在用户登录后发布到其他文档。

标签: firebase react-native google-cloud-firestore transactions


【解决方案1】:

在撰写本文时,不可能将在一个事务中通过身份验证服务中的createUserWithEmailAndPassword() 方法创建用户AND写入到 Firestore 服务。

它们是 Firestore 提供的两种不同服务,因此您不能在一个事务中合并对这两种不同服务的调用。

【讨论】:

  • 好的,我如何在创建用户但不先登录的情况下获取用户 ID,因为当我使用电子邮件创建用户时,它会自动登录,这会破坏连续的操作链。
  • 我想我不能在不先登录的情况下获取用户 ID,我想这还是可以的。我只是不会重定向到另一个页面,因为这会破坏操作。感谢您的帮助!
  • 您可能对此article 感兴趣,它介绍了如何使用可调用云函数构建一个模块,该模块允许具有特定管理员角色的最终用户创建其他用户(免责声明,我作者)。通过使用云功能,您不会登录新用户。
  • 当您从客户端调用createUserWithEmailAndPassword() 方法时(即通过客户端SDK),新用户会自动登录。没有任何方法可以防止这种情况发生。
  • 感谢分享,但我改变了我的方法,所以现在我真的希望用户能够注册和登录,然后他可以继续注册其他额外信息,他可以在以后随时进行.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 2018-05-11
  • 2021-07-18
  • 1970-01-01
相关资源
最近更新 更多