循环浏览firestore查询结果

Posted

技术标签:

【中文标题】循环浏览firestore查询结果【英文标题】:Cycle through firestore query result 【发布时间】:2019-01-11 09:41:01 【问题描述】:

我有一个查询,它定义了我要查找的文档,我如何循环浏览它们并将它们添加到列表中?

到目前为止的查询和循环:

// Create a reference to the cities collection
val facRef = firestoreInstance.collection("faculty")
// Create a query against the collection.
val query = facRef.whereEqualTo("university", list[position].ID)
// Cycle
listFac.clear()
for (document in query) 
    val fac = Faculty()
    fac.ID = document.id
    fac.Desc = document["Desc"].toString()
    listFac.add(fac)

【问题讨论】:

这段代码有什么问题?使用listFac.add(fac) 这是你在做什么?你不是将Faculty 类型的对象添加到listFac 列表中吗? @AlexMamo document in query 是错误,query 是红色下划线。说for循环需要有一个迭代器方法 "is the error" ok,那么你说的具体错误是什么? @AlexMamo 它只是说循环需要一个迭代器方法 请准确粘贴整个错误。 【参考方案1】:

查询不会立即包含数据库中的文档。您需要首先告诉它检索这些文档,例如通过调用query.snapshots

for (document in query.snapshots) 
    val fac = Faculty()
    fac.ID = document.id
    fac.Desc = document["Desc"].toString()
    listFac.add(fac)

另见:

Firestore queries on Flutter documentation for Cloud Firestore in FlutterFire 这个tutorial on building a Flutter app with Firestore。

【讨论】:

【参考方案2】:

当您调用查询时,您需要给它时间来检索结果,例如,在快照方法中执行您想要执行的操作

for (document in query.snapshots) 
val fac = Faculty()
fac.ID = document.id
fac.Desc = document["Desc"].toString()
listFac.add(fac)

【讨论】:

以上是关于循环浏览firestore查询结果的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Firestore 中一次创建/更新多个文档

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

Firestore - 在本地合并两个查询

使用python在Firestore中运行GeoPoint

SwiftUI + Firestore - 基于从 Firestore 返回的数组的过滤器列表

循环访问 Firestore 数据库