【问题标题】:SwiftUI + Firestore - Cannot create user in firestore after authenticatingSwiftUI + Firestore - 身份验证后无法在 Firestore 中创建用户
【发布时间】:2020-10-11 21:06:54
【问题描述】:

我的预期流程是有人到达注册页面,输入他们的电子邮件和密码,然后在成功处理后在 Firestone 中创建一个用户。在打印了很多行之后,我可以看到身份验证部分工作得很好,但是当我尝试在 firestore 中创建用户时它崩溃了。我怀疑这是一个异步问题,因为我尝试编写以下代码,但 currUser?.uid 为 nil。请帮忙!

db.collection("users").document(currUser?.uid ?? "").setData(user) { err in

这也是我试图解决异步问题的方式。下面是注册按钮的代码

            Button(action: {
                self.signUp()
                self.viewModel.createUser()
            })

我还附上了我在下面遇到的错误:

2020-06-21 23:28:20.163164-0400 例程 [5662:144417] *** firebase::firestore::api::DocumentReference::DocumentReference(model::ResourcePath, std::shared_ptr) 中的断言失败)(), /Users/paulachan/Documents/Apps/Routines/Pods/FirebaseFirestore/Firestore/core/src/api/document_reference.cc:67 2020-06-21 23:28:20.241127-0400 例程 [5662:144417] *** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“FIRESTORE 内部断言失败:文档引用无效。文档引用必须有偶数个段,但用户有 1'

【问题讨论】:

    标签: firebase google-cloud-firestore swiftui


    【解决方案1】:

    错误消息意味着currUser 为空,因此db.collection("users").document(currUser?.uid ?? "") 计算结果为无效的db.collection("users").document("")

    根据您分享的代码,我们无法说明为什么currUser 为空,但这通常意味着您在初始化之前尝试访问Auth.auth().currentUser。我建议使用getting the current user 文档中的第一个代码 sn-p,因为它确保您的代码仅在用户登录完成后执行:

    Auth.auth().addStateDidChangeListener { (auth, user) in
      if (user != nil) {
        db.collection("users").document(user?.uid ?? "").setData(user) { err in
          ...
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-10-02
      • 2020-11-21
      • 2020-06-10
      • 2020-08-18
      • 2020-01-05
      • 2019-11-22
      • 2021-05-29
      • 2019-06-17
      • 1970-01-01
      相关资源
      最近更新 更多