ios - Firestore 不返回查询 Swift 5 Xcode 11.3
问题描述
我目前正在尝试使用 Firestore 开发一个 ios 应用程序,并且在查询数据库时,我没有得到任何结果,因为 if/else 块都没有执行。我想知道这里出了什么问题...
db.collection("users").whereField("uid", isEqualTo: uid).getDocuments() { (querySnapshot, error) in
if let error = error {
print("Error getting documents: \(error.localizedDescription)")
} else {
for document in querySnapshot!.documents {
weight = document.data()["weight"]! as? Double
}
}
}
更新:我在较早的方法中调用了数据库,这会正确返回用户的名字(当我添加权重时,它也会返回正确的值)。但是任何后续调用都无法返回任何内容。希望这些信息有所帮助。
解决方案
我有和你一样的 Firestore 结构,这对我有用:
func test() {
var accessLevel: Double?
let db = Firestore.firestore()
db.collection("users").whereField("uid", isEqualTo: UserApi.shared.CURRENT_USER_UID!).getDocuments() { (querySnapshot, error) in
if let error = error {
print("Error getting documents: \(error.localizedDescription)")
} else {
for document in querySnapshot!.documents {
accessLevel = document.data()["accessLevel"]! as? Double
print(accessLevel!)
}
}
}
}
当前 uid:
// Actual logged-in User
var CURRENT_USER_UID: String? {
if let currentUserUid = Auth.auth().currentUser?.uid {
return currentUserUid
}
return nil
}
希望能帮助到你。
推荐阅读
- database - JMeter 脚本是否真的在数据库中创建记录
- swift - 如何在加载新场景后的前几秒内停用触控功能?
- sql-server - 使用 django 分页和 SQL 查询,没有 ORM
- javascript - 在 Spring 控制器中,我得到的日期早于我发送的实际日期
- r - 页面加载时R闪亮触发downloadHandler
- mysql - 如何选择今天的最后一个条目 + 过去 6 天的数据
- android - 在arcore android中绘制透明的3d立方体模型
- android - 谷歌播放订阅和移动应用免费试用自动取消/结束
- ios - 当现有项目已经有 Podfile 时,如何从 React Native 升级从 .59 迁移到 0.60?
- jquery-bootgrid - 如何在 jQuery Bootgrid 中默认选择几列