ios - Swift-从随机创建的文档ID(Firestore)中获取字段

标签 ios swift firebase google-cloud-firestore

在我的应用程序中,用户可以注册,并且这样做,我还保存了firstnamelastnameuid

这是Firestore-Database的样子:

enter image description here

我想访问用户lastname,但我不知道如何,因为Document-ID是在注册过程中随机创建的。

Auth.auth().createUser(withEmail: email, password: password) { (result, err) in

            //check for errors
            if let err = err {
                self.view.endEditing(true)
                self.showError(err.localizedDescription)

            }else {

                //user was created successfully; store first and last name
                let db = Firestore.firestore()

                db.collection("users").addDocument(data: ["firstname":firstName, "lastname": lastName, "uid": result!.user.uid]) { (error) in

                    if error != nil {
                        self.showError("Error saving user data")
                    }
                }

                //transition to home
                self.transitionToHome()
            }

最佳答案

您需要知道两件事之一才能在Firestore中获取文档:

  • 文档的完整路径,包括集合名称和文档ID(以及任何嵌套的子集合和文档ID)
  • 有关该文档中数据的信息,例如,其字段之一的值。

  • 如果您都不知道这些事情中的任何一个,那么您所能做的就是获取集合中的所有文档,并通过查看集合中的所有内容来找出想要的内容。

    最重要的是,如果您不知道哪个文档属于哪个用户,那您一定会感到困惑。您应该将用户的ID存储在文档中,或者作为文档本身的ID存储,以便以后可以使用它来查找该文档。

    我建议使用Firebase Auth用户ID作为文档ID。这是非常普遍的。请勿使用addDocument编写带有随机ID的use setData和您知道的ID。

    Firestore无法随时知道您想要哪个文档,除非您提供一种查找文档的方式。

    关于ios - Swift-从随机创建的文档ID(Firestore)中获取字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59239794/

    相关文章:

    ios - 使用 Peek 和 Pop 共享工作表

    ios - 非自定义 UITableViewCells 在单击或滚动时消失

    ios - vImage 与使用dispatch_apply 的普通循环具有相同的性能

    php - 带地理定位的 Swift 自动推送通知

    ios - 允许使用字符集退格

    javascript - firebase - Firebase当前用户未存储正确的用户

    ios - iPhone UINavigationBar - 设置 rightBarButtonItem 的宽度和边距

    ios - 为什么我们可以显式地解包这个可选的而不用担心崩溃?

    javascript - Angularfire - $scope 在异步调用后不会更新,并且 $apply 抛出错误

    Firebase CLI v7.0.0 与 Node.js v6.17.1 不兼容请将 Node.js 升级到版本 >= 8.0.0