Firestore并非返回集合的所有文档

时间:2020-04-03 15:57:54

标签: android firebase kotlin google-cloud-firestore

我正在为Android编写一个飞行计划器。为了使用某些REST API,我需要每个机场的ICAO标识符。我正在尝试从Firestore提取大约14k的documnet,并将其映射到对象。 我的消防站的结构: firebase structur

结果是每次我都会得到7698份文档作为回报。

Public Sub SetAppfolders()
 Dim nsp As Outlook.NameSpace
 Dim objSycs As Outlook.SyncObjects
 Dim objSyc As Outlook.SyncObject
 Dim mpfInbox As Outlook.Folder     

 Set nsp = Application.GetNamespace("MAPI")
 Set objSycs = nsp.SyncObjects
 Set objSyc = objSycs.AppFolders
 Set mpfInbox = nsp.GetDefaultFolder(olFolderInbox)

 mpfInbox.InAppFolderSyncObject = False
 objSyc.Start
End Sub

方法 val db = Firebase.firestore val airports = db.collection("airport") val myColl : ArrayList<AirportDAO> = arrayListOf() val start = System.currentTimeMillis() var end : Long airports.get().addOnSuccessListener { end = System.currentTimeMillis() Log.d("firebase", (end - start).toString()) val docs = it.documents Log.d("size", it.size().toString()) // <-- 7698 for (doc in docs) { val a = doc.toObject(AirportDAO::class.java) if (a != null) myColl.add(a) } Log.d("size", myColl.size.toString()) // <-- 7698 } 应该返回所有DocumentSnapshots。我没有任何限制吗?

@Edit:我的收藏集结束。 “ Filtruj”在波兰语中的意思是“排序”

enter image description here

1 个答案:

答案 0 :(得分:2)

在以下参考文献上添加侦听器:

val airports = db.collection("airport")

这意味着要获取AirportDAO集合中存在的所有airport对象。如果您的myColl列表的大小为7698,则意味着您访问该集合时需要承担 7698 读取操作,在我看来,这非常

我的收藏夹中总共有14110个文档。

不,你不!您恰好有7698,这就是您的代码所说的。

如果要过滤结果,则应使用Query。如果始终需要所有这些功能,那么您将使用Firestore创建大量流量。