firebase - 光标中的 FireStore 错误 - 光标位置超出范围
问题描述
我有一种方法可以从 FireStore 返回一些数据,该方法用于我的 Flutter 应用程序中的分页。
static Future<QuerySnapshot> getAllItems({int count: 12, dynamic lastKey}) {
if (lastKey != null) {
return Firestore.instance
.collection('uploads')
.where('active', isEqualTo: true)
.where('purge', isEqualTo: false)
.startAfter([lastKey])
.orderBy("active_time", descending: true)
.where('active_time', isLessThanOrEqualTo: DateTime.now())
.limit(count)
.getDocuments();
} else {
return Firestore.instance
.collection('uploads')
.where('active', isEqualTo: true)
.where('purge', isEqualTo: false)
.orderBy("active_time", descending: true)
.where('active_time', isLessThanOrEqualTo: DateTime.now())
.limit(count)
.getDocuments();
}
}
当未传递 lastKey 值时,一切正常。但是当我传递 lastKey 的字符串值时,我得到以下错误。
cursor position is outside the range of the original query
该字段active_time
是 FireStore 中的时间戳类型。为相同创建索引。
解决方案
既然active_time
是DateTime,lastKey
也应该是DateTime。
从文档开始startAfter
获取一个值列表,创建并返回一个新查询,该查询在提供的字段之后相对于查询的顺序开始。
https://pub.dartlang.org/documentation/cloud_firestore/latest/cloud_firestore/Query/startAfter.html
推荐阅读
- javascript - JSON API 调用的可选链接在 React 中不起作用
- refresh - DevExtreme 刷新网格
- mysql - 如果mysql中的日期格式为(dd-mm-yyyy),如何从日期返回“年”
- flask - 无法通过入口访问我的 Flask 服务器
- javascript - 当我使用 Angular Material 和一些自定义它的代码时,如何解决 Angular 应用程序中的 $event 问题
- kubernetes - 将 Kubernetes 从 1.17.5 升级到 1.17.6 失败
- javascript - 我如何知道在 jexcell javascript 库中突出显示了哪个单元格?
- java - 在 andriod studio 3.2 中面临问题无法运行模拟器我的电脑规格是 2gm ram,甚至无法构建应用程序
- reactjs - 在渲染不同的组件 (`TodoDelete`) 时无法更新组件 (`ConnectFunction`)
- algorithm - 计算和分析运行时