我今天才注意到,每当我要查询数据库时,都会收到一个错误,这对我来说实际上没有任何意义,并且查询只会停止工作。几周前,它运行良好。
Invalid Query. All where filters with an inequality (lessThan, lessThanOrEqual, greaterThan, or greaterThanOrEqual) must be on the same field. But you have inequality filters on 'value1' and 'value2')
Stream<List<MyModel>> myStream(
{MyFilter filter, String category}) {
return _service.collectionsStream(
path: APIPath.tools(cid, category),
queryBuilder: filter != null
? (query) => query
.where('value1', isGreaterThan: filter.minValue1)
.where('value1', isLessThan: filter.maxValue1)
.where('value2', isLessThan: filter.maxValue2)
.where('value2', isGreaterThan: filter.minValue2)
: null,
builder: (data, documentID) => MyModel.fromMap(data, documentID),
sort: (lhs, rhs) => lhs.value1.compareTo(rhs.value1));
}
难道我做错了什么?该错误是什么意思,为什么我上次没有得到它?
最佳答案
Firestore查询只能在单个字段上包含关系条件(>
,<
等)。从query limitations的文档中:
Queries with range filters on different fields are not supported.
因此,您必须选择要让Firestore在哪个字段上执行范围过滤器。然后,您必须在应用程序代码中执行其他操作。
要了解有关为何存在此限制的更多信息,并了解如何在Firestore的限制范围内实现用例,我强烈建议您查看视频系列Getting to know Cloud Firestore。
关于flutter - Firestore queryBuilder中的多个where查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61306009/