【发布时间】:2020-12-20 00:21:09
【问题描述】:
我的 Firestore 中有一些带有“startDate”和“endDate”的文档。 现在我想获取今天在 startDate 和 endDate 之间的每个文档。
final DateTime dateTime = new DateTime.now();
final QuerySnapshot querySnapshot = await colRef
.doc(docId)
.collection('subCol')
.where('startDate', isLessThanOrEqualTo: dateTime)
.where('endDate', isGreaterThanOrEqualTo: dateTime)
.get();
这个错误非常不言自明:
I/flutter (5978): 'package:cloud_firestore/src/query.dart': 失败 断言:第 490 行 pos 18:'hasInequality == field':所有地方 具有不等式( 或 >=)的过滤器必须位于同一 场地。但是您在 'FieldPath([startDate])' 和 'FieldPath([endDate])'.
但是在不过滤客户端的情况下必须有一个解决我的问题的方法。是否有可能为此创建一个索引,如果可以,它是什么样的?另一种方法是将日期范围保存在一个字段中而不是 startDate/endDate 中,但在这里我会更少知道如何过滤它。 SQL 中这么简单的问题,在 Firebase 中却很难……
亲切的问候,
雅各布
【问题讨论】:
标签: firebase flutter date google-cloud-firestore between