简体   繁体   English

firestore 获取子集合

[英]firestore fetch subcollection

I'm trying to fetch subcollection of my users document with code below我正在尝试使用以下代码获取我的用户文档的子集

    func readData(){
        let userId = Auth.auth().currentUser?.uid
        self.db.collection("users/\(userId)/saved").getDocuments { (snapshot, err) in
            if let err = err {
                print("err")
            }
                if let userId != nil {
                    for document in snapshot!.documents {
                       let docId = document.documentID
                       let cty = document.get("city") as! String
                       let ccode = document.get("code") as! String
                       let countr = document.get("country") as! String
                       print(cty, ccode, countr,docId)
                }
        }
        }

but my code doesn't print anything, I don't understand the problem, documents exsist, see picture below但是我的代码没有打印任何东西,我不明白这个问题,文件存在,见下图

在此处输入图像描述

You're using illegal syntax with the userId check in the snapshot return but the logic flow is the bigger problem.您在快照返回中对userId检查使用了非法语法,但逻辑流程是更大的问题。 I would recommend you check if the user is signed in before grabbing the subcollection and checking if there is a viable snapshot instead of checking the state of authentication.我建议您在获取子集合并检查是否有可行的快照之前检查用户是否已登录,而不是检查身份验证的 state。

func readData() {
    guard let userId = Auth.auth().currentUser?.uid else {
        return
    }
    db.collection("users/\(userId)/saved").getDocuments { (snapshot, error) in
        guard let snapshot = snapshot else {
            if let error = error {
                print(error)
            }
            return
        }
        for doc in snapshot.documents {
            guard let city = doc.get("city") as? String,
                  let code = doc.get("code") as? String,
                  let country = doc.get("country") as? String else {
                      continue // continue document loop
                  }
            let docId = doc.documentID
            print(city, code, country, docId)
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM