如何在Firestore中读取当前用户配置文件



我正在使用Firestore开发我的第一个IOS应用程序。我成功地从"用户"中检索了所有用户文档或具有文档名称的特定文档。收集。但是,只要我想查询currentUsers文档,我就会遇到麻烦。我需要用户配置文件viewController的数据。

我可以查询一个特定的文档,并打印它与以下代码:

func loadUserData() {
let userDocumentRef = Firestore.firestore().collection("users").document(
"6tIzsXgbOMDIFpdgR18i")

userDocumentRef.getDocument { (document, error) in
if let document = document, document.exists {
let userData = document.data().map(String.init(describing: )) ?? "nil"
print("Document data: (userData)")
} else {
print("document does not exist")

}
}
}

但是当我试图用这段代码获取currentUsers文档时,我得到了"文档不存在"的错误:

func currentUserData() {
let userID : String = (Auth.auth().currentUser?.uid)!
let userRef = Firestore.firestore().collection("users").document(userID)
userRef.getDocument { (document, error) in
if let document = document, document.exists {
let userData = document.data().map(String.init(describing: )) ?? "nil"
print("Document data: (userData)")
} else {
print("document does not exist")

}
}
}

这是Firestore中用户集合的截图。Firestore用户集合截图

我只是不知道我做错了什么,所以任何帮助都是感激的。

似乎在映射文档时存在问题。下面是如何将数据从Firestore映射到Swift:

struct UserProfile: Codable, Identifiable {
@DocumentID var id: String?
var userId: String
var firstName: String
// ... other attributes
}
func currentUserData() {
// Note: this is unsafe, please use an auth state change listener instead
// Also, please try to avoid using force unwrap - your app will crash if the attribute is nil
let userID : String = (Auth.auth().currentUser?.uid)!
let userRef = Firestore.firestore().collection("users").document(userID)
userRef.getDocument { (document, error) in
if let document = document, document.exists {
let userData = document.data(as: UserProfile.self)
print("Document data: (userData)")
} else {
print("document does not exist")
}
}
}
下面是如何设置认证状态更改侦听器:https://firebase.google.com/docs/auth/ios/start#listen_for_authentication_state

最新更新