Firestore timestamp date range query with order by generate an error
我编写了一个查询来根据日期范围过滤一些数据,并希望按某个字段 (Int) 对结果进行排序。我编写的代码生成”FIRInvalidArgumentException”异常。
如果我删除了”order by”,那么查询将完美执行。我已经为 visitDate 和 views 字段创建了索引。
索引:visitDate 升序视图降序
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
let calendar = Calendar.current
let currentDateComponents = DateComponents( guard let currentDate = calendar.date(from: currentDateComponents) else { guard let weekEndDate = calendar.date(byAdding: .day, value: -7, to: currentDate) else { let queryRef = Firestore.firestore().collection(“ArticleVisits”) |
在日期范围内使用 order by 有什么问题吗?我需要为此创建一个特殊的索引吗?
感谢所有帮助。
- 请在您的问题中包含准确、完整的错误消息和堆栈跟踪,因为它通常包含有关问题原因的重要信息。
- 这不是有效的 Firestore 查询。您必须按照用于该范围的相同字段进行排序。订购和限制数据。底部示例您不能在不同字段上执行范围过滤器和一阶排序。最好的办法是删除 order by 并在加载数据后在代码中排序。
@Jay 感谢您为我指明正确的方向。根据它说的文档,
However, if you have a filter with a range comparison (<, <=, >, >=), your first ordering must be on the same field:
所以我必须通过 visitDate 而不是 view 来订购它。
来源:https://www.codenong.com/56683624/