swift - 如何让应用在登录时自动识别当前用户 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。我的问题现在解决了。不过还有更多的问题。
推荐阅读
- c++ - 为什么类构造函数中的参数不变?
- android - Facebook 用户的个人资料图片 URL 在 PICASSO 中不起作用
- twitter-bootstrap - Bootstrap 3 水平 dl:如何更改 dt 宽度?
- android - 自定义TextView无法设置重力
- point-cloud-library - 点云库:将点云添加到 PCL Visualizer 查看器时出错
- angular - 使用 auth.service 进行路由保护
- python - 删除/更改日志文件的路径会引发错误。我该如何忽略或解决这个问题?
- c# - 如何将 SQL Server LocalDB 数据库移动到新计算机
- java - Java 8 泛型兼容性
- python - 如何将 C 函数中的 printf() 转换为 python 数据结构?