循环访问 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 中的用户数据?
限制通过VPC网络访问Google Cloud Firestore。