在下面这个 Case 中,我针对 createdAt 设置了一个日期范围,但是最终查询出来的结果还是超过了下限。

let query = LCQuery(className: "Song")
try query.where("scene", .equalTo(LCObject(className: "Scene", objectId: "62d7ad8282d8327e67f78fd5")))
try query.where("createdAt", .descending) // 固定降序,否则 firstPageRange 相关的判断需要调整
try query.where("createdAt", .greaterThan(dateFormatter.date(from: "2022-07-29")!))
try query.where("createdAt", .lessThan(dateFormatter.date(from: "2022-08-09")!))
query.limit = 100

把 query 的 parameters 打印出来如下,看起来 createdAt 像是少了一个条件?
▿ 4 elements
▿ 0 : 2 elements
- key : "order"
- value : "-createdAt"
▿ 1 : 2 elements
- key : "limit"
- value : 100
▿ 2 : 2 elements
- key : "where"
- value : "{\"createdAt\":{\"$lt\":{\"iso\":\"2022-08-08T16:00:00.000Z\",\"type\":\"Date\"}},\"$and\":[{\"scene\":{\"className\":\"Scene\",\"type\":\"Pointer\",\"objectId\":\"62d7ad8282d8327e67f78fd5\"}}]}"
▿ 3 : 2 elements
- key : "className"
- value : "Song"

最后我必须得通过组合条件来解决