gpt4 book ai didi

flutter - 消防站 |为什么所有过滤器都必须在同一字段上?

转载 作者:IT王子 更新时间:2023-10-29 07:12:21 26 4
gpt4 key购买 nike

显然 Firestore 不支持在不同字段上使用范围过滤器的查询,如所述 here :

我的问题是,为什么?

如何按时间和地点查询例如:

Firestore.instance.collection('events')
.where("eventTime", isGreaterThanOrEqualTo: DateTime.now().millisecondsSinceEpoch)
.where("eventLocation", isGreaterThan: lesserGeopoint)
.where("eventLocation", isLessThan: greaterGeopoint)
.where("eventStatus", isEqualTo: "created")
.orderBy('eventLocation', descending: false)
.orderBy('eventTime')
.snapshots(),

(来自用 Dart 编写的 Flutter 应用程序的示例)

我收到以下错误:

All where filters other than whereEqualTo() must be on the same field. But you have filters on 'eventTime' and 'eventLocation', null)

我不明白为什么不支持这个以及如何解决这样的查询?

感谢任何帮助:-)

谢谢,迈克尔

最佳答案

Cloud Firestore 为其允许的任何读取操作提供强大的性能保证:读取操作所花费的时间取决于您正在读取的项目数量,而不是集合中的项目数量。这是一个非常独特的性能保证,因为这意味着当您拥有 100 万用户时,您的查询将花费与拥有 10 亿用户时相同的时间。

Firestore 仅提供可以维持此性能保证的查询操作。这是您可能在 Firestore 查询 API 中发现的限制的主要原因。

要解决这个限制,您通常会在查询的主要字段上执行过滤和排序,然后在客户端的辅助字段上排序

如果您想详细了解 Firestore 的查询功能和限制,我强烈建议您观看 How do queries work in Cloud Firestore?和其余的Get to Know Cloud Firestore视频系列。

另见:

关于flutter - 消防站 |为什么所有过滤器都必须在同一字段上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54969057/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com