循环访问 Firestore 数据库

Posted

技术标签:

【中文标题】循环访问 Firestore 数据库【英文标题】:Loop though Firestore Database 【发布时间】:2019-02-08 21:09:56 【问题描述】:

我希望循环通过我的 Firestore DB 以获取与我的所有文档组合的总距离

我目前正在使用此查询来获取文档总数

    firebaseDB.collection("journey").document(key).collection("journeys")
        .getDocuments()  (querySnapshot, err) in
            if let err = err 
                print("Error getting documents: \(err)")
            
            else
            
                var totalJourney = 0
                for document in querySnapshot!.documents 
                    totalJourney += 1
                    print("\(document.documentID) => \(document.data())");
                
                print("totalJourney = \(totalJourney)");
                self.totalJourney.text = String(totalJourney)
            
        

【问题讨论】:

我不知道为什么当你清楚地开始这个问题,展示你的结构,然后你使用的代码时,你为什么会被否决。所以我支持你 - 希望我的回答会有所帮助。 非常感谢@Jay,在没有任何解释的情况下被否决是相当令人沮丧的。 我唯一能想象的就是你问的不是很清楚。那么:运行此代码时有什么问题?当您在调试器中单步执行它时会发生什么?但老实说,我大多同意杰的观点,因为这很容易通过在评论中询问你来解决。所以我也反对。只有两个,我们又回到了我们开始的地方。 :) @FrankvanPuffelen 我会记住他们的提示,以备将来的任何问题!谢谢:) 【参考方案1】:

您的代码并不遥远,但您的代码中缺少一些东西 - 例如,读取每个节点中的距离子节点并将它们相加。下面是一些输出行程数和总里程数的示例代码。

我的结构比你的略浅,我使用了一个名为“英里”的子节点而不是距离,但概念是一样的。

func readJourneys() 
    self.db.collection("journeys").getDocuments()  (querySnapshot, err) in
        if let err = err 
            print("Error getting documents: \(err)")
         else 
            let count = querySnapshot!.documents.count

            var totalMiles = 0
            for document in querySnapshot!.documents 
                //let journeyId = document.documentID
                let miles = document.get("miles") as! Int
                totalMiles += miles
            
            print("There were: \(count) journeys covering: \(totalMiles) miles")
        
    

输出是

There were: 3 journeys covering: 20 miles

【讨论】:

我非常感谢您的解决方案 Jay,效果很好!

以上是关于循环访问 Firestore 数据库的主要内容,如果未能解决你的问题,请参考以下文章

在不循环的情况下查询 Firestore 集合中的所有文档

在 iOS 中访问其他项目 Firestore 数据

我需要啥规则才能允许访问 Firestore 中的用户数据?

限制通过VPC网络访问Google Cloud Firestore。

客户对 Cloud Firestore 数据库的访问权限将在 1 天后到期 [重复]

Firestore 规则:允许使用密码访问文档