【发布时间】:2020-12-18 13:26:12
【问题描述】:
我有一组可以从 Firebase (Cloud Firestore) 查询的办公室,然后我只需要显示距离用户一定距离内(比如说 20 英里)的办公室。我无法使用 db.collection('offices').where(...) 进行此查询。
我必须查询所有办公室,然后计算每个办公室与当前用户的距离,如果小于 20 英里,我会列出用户的办公室。但问题是我的收藏中可能有数百万个办公室,这意味着对于每个用户,我读取数百万个数据以显示可能只有不到 100 个办公室,这些办公室将在他/她的 20 英里范围内。
这里有 2 个问题 - 1) 我如何执行此查询而无需阅读此集合中的所有文档。 2)我如何对结果进行分页,以便即使有 100 个办公室落在所需的距离内,我仍然希望分批显示 10 个(获取前 10 个过滤的文档,一旦用户滚动到最后,获取下一个10 等等)。
【问题讨论】:
-
谢谢。就一个问题。当我使用“geo.collection(collectionRef:collectionReference).within(center:center,radius:radius,field:field)”查询地理数据时,它不算作文档读取。对吗?
-
另外,您知道我如何将此查询与正常的 firebase 查询(使用 ref.where)结合起来,以在 20 英里范围内找到“open”字段值为 true 的办公室吗?
-
如果您还有其他问题,请单独发布。
标签: firebase flutter filter google-cloud-firestore pagination