首页 > 解决方案 > 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
        }
    }
}

数据库文件结构

更新:我在较早的方法中调用了数据库,这会正确返回用户的名字(当我添加权重时,它也会返回正确的值)。但是任何后续调用都无法返回任何内容。希望这些信息有所帮助。

标签: iosswiftdatabasefirebasegoogle-cloud-firestore

解决方案


我有和你一样的 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
}

希望能帮助到你。


推荐阅读