flutter - Firestore queryBuilder中的多个where查询

标签 flutter dart google-cloud-firestore

我今天才注意到,每当我要查询数据库时,都会收到一个错误,这对我来说实际上没有任何意义,并且查询只会停止工作。几周前,它运行良好。

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/

相关文章:

navigation - 如何 - 带有持久子屏幕的 Flutter Drawer

flutter - 无法在statefulwidget中定义对象

firebase - Firebase Firestore https 可调用云函数中出现未经验证的错误

android - Flutter:适用于 Windows 的 iOS 模拟器

flutter - Flutter:Future <String>返回null,但如果打印则具有值

flutter - 从主页退出,跳过登录页面

flutter - 运行时Http包和JsonPlaceholder中的错误

dart - 在 flutter 中使用 Mixins

android - 是否可以使用 toObject 和 object 作为参数从 firestore 检索数据?

firebase - 如何使用本地缓存并仅使用 Firestore 更新已更改的文档?