ios - Swift - 从随机创建的文档 ID 中获取字段(Firestore)
问题描述
在我的应用程序中,用户可以注册并通过这样做我还保存firstname
,lastname
和uid
.
这就是 Firestore-Database 的样子:
我想访问用户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写,用你知道的ID用setData 。
Firestore 不能随时知道您想要哪个文档,除非您为其提供一种查找文档的方法。
推荐阅读
- javascript - 使用获取响应的表单验证不起作用?
- r - 如何让 R 为日期创建一列?
- python - 泡菜字符串与泡菜数字,硬盘上不同的泡菜文件大小
- httpclient - 是什么让 HttpSession 具有独特的 HTTP 客户端?
- pandas-groupby - 如何在熊猫中分组并制表值频率
- json - 勘误表 jmeter 提取器上 JMESpath 的不同行为
- laravel - 我在 laravel 中遇到不支持的邮件传输 [sendgrid] 错误
- python - 无法在 Azure 上安装 psycopg2
- json - 如何读取和打印 JSON 数组元素
- css - 背景图像:线性渐变在 Safari 中不起作用