首页 > 解决方案 > 如何让应用在登录时自动识别当前用户 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 文档,谢谢你的提问。

标签: swiftfirebasegoogle-cloud-firestorequeryingnested-documents

解决方案


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


推荐阅读