我刚刚遵循并正确地将以下教程添加到了我的应用程序。但是我在努力如何从Firestore数据库中获取“已登录”用户的详细信息?
教程:
用户通过我的应用程序注册后,“名”,“姓”和“ UID”将由Firestore数据库保存。但是,一旦用户登录,我如何获取用户的名字以复制到应用程序内欢迎屏幕上的标签上?
谢谢
答案 0 :(得分:0)
我想您知道Firestore的工作方式。否则,您可以在此documentation中获取所有信息,也可以在YouTube上观看videos有关Firestore的信息。
因此,假设您将用户保存在名为 users 的集合中。用户登录后,您可以像这样获得当前用户:
let currentSignInUser = Auth.auth().currentUser!
如果您要强制打开包装,请确保将登录。
拥有当前用户后,可以通过调用当前用户的uid
属性来获取其uid:
let currentUserID = currentSignInUser.uid
现在,您可以查询该uid,以从Firestore 用户集合中获取与您当前登录的用户具有相同UID字段值的文档:
let query = Firestore.firestore().collection("users").whereField("UID", isEqualTo: currentUserID)
确保whereField()
函数的第一个参数与文档中的字段名称相同。因为您提到UID已保存到数据库,所以我将其命名为UID。
这都是为了获取当前用户的信息并对其进行查询。现在,您可以从Firestore获取文档:
query.getDocuments() { [weak self] (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
if let userInfo = querySnapshot?.documents.first {
DispatchQueue.main.async {
// Set label text to first name
self?.youLabel.text = userInfo["firstName"]
}
}
}
}
将userInfo
键更改为您用于在Firestore中存储名字的任何名称。例如,如果您将文档字段命名为firstName
,则userInfo
词典关键字必须为 first 。