如何让应用在登录时自动识别当前用户的 Firestore 文档 ID?

问题描述

用户通过我的表单注册时,会创建一个与该用户相关联的文档。我的主要目标是创建一个全局函数,可以识别登录用户获取他们的文档 ID。我有一个功能设置,用于将文档添加用户文档的子集合中,这是完美设置,唯一的缺点是当我使用多个帐户进行测试时,我必须手动切换集合路径。这就是我的意思。

@IBAction public func createEventButton(_ sender: UIButton) {
    
    
    let error = validateFields()
    
    if error != nil {
        showError(error!)
    } else {
        
        db.collection("school_users/\(stThomas)/events").addDocument(data: ["event_name": nameTextField.text,"event_date": dateTextField.text,"event_cost": costTextField.text,"for_grades": gradesTextField.text]) { (error) in
            if error != nil {
                self.showError("There was an error trying to add user data to the system.")
            } else {
                self.dismiss(animated: true,completion: nil)
                
            }
        }
    }
    

正如您在此处看到的,我使用字符串插值和用于存储文档 ID 的“stThomas”常量。我基本上想创建一个函数来识别登录用户的文档 ID,这样我就可以使用我的常量而不是字符串插值,并且每次都必须手动切换用户集合路径,这在生产过程中最终是不可能的。>

更不用说,我确实有一个获取文档 ID 的功能,例如单击一个事件,但作为 Swift 的初学者,我似乎无法将这些点联系起来。我还将展示此功能以供澄清。

 func getDocID() {
    db.collection("school_users/\(notredame)/events").getDocuments() { (querySnapshot,error) in
        if let error = error {
            print("There was an error getting the documents: \(error)")
        } else {
            self.documentsID = querySnapshot!.documents.map { document in
                return DocID(docID: (document.documentID))
            }
            self.tableView.reloadData()
        }
    }
}

在这函数中,你可以看到我的另一个常量“notredame”和另一个存储的文档 ID。如果有人知道一种简单的方法来做到这一点,那就太好了。是的,我查看了 Firebase 文档,感谢您的提问。

解决方法

我做了一些额外的研究,并意识到我可以在收集路径中使用用户 ID。我的问题现在解决了。不过还有更多问题要来。