我目前正在使用 firebase 作为数据库构建一个应用程序。然而,我正在尝试获取用户的类别,尽管我可以在我的 firebase 控制台中看到该用户实际上有 3 个类别(我在注册时默认添加了它们)。
我尝试调试但无法弄清楚为什么会发生这种情况。此外,我查找了类似的问题,并在将函数调用到
.onAppear
方法时移动了代码。这些尝试都没有成功...
获取类别代码:
func fetchCategories(forUserId userId: String, completion: @escaping (Result<[Category], Error>) -> Void) {
let categoriesRef = db.collection("users").document(userId).collection("categories")
print("user id: \(userId)")
categoriesRef.getDocuments { (snapshot, error) in
if let error = error {
completion(.failure(error))
return
}
guard let documents = snapshot?.documents else {
completion(.failure(FirestoreErrorCode.notFound as! Error))
return
}
let categories = documents.compactMap { document -> Category? in
do {
return try document.data(as: Category.self)
} catch {
print("Error decoding category: \(error)")
return nil
}
}
completion(.success(categories))
}
}
调用函数:
.onAppear {
FirebaseManager().fetchCategories(forUserId: Auth.auth().currentUser?.uid ?? "") { result in
do {
let categories = try result.get()
print("fetched categories")
print(categories.isEmpty ? categories : categories[0])
if categories.isEmpty == false {
firstCategory = categories[0]
}
} catch {
print("Error fetching categories: \(error.localizedDescription)")
}
}
}
如果我需要提供任何其他信息,请直接说!
您需要对您的对象持有强引用
@StateObject var fm = FirebaseManager()