使用Firestore REST API排序和筛选结果时,无法为startAt
值使用游标/引用值。我觉得这可能是可能的,在Firestore的基于光标的分页示例中可以看到这一点,他们的SDK中详细介绍了这一点:https://firebase.google.com/docs/firestore/query-data/query-cursors
我有一个对文档中的整数字段使用orderBy
的查询。我可以成功地从这个查询的特定整数值开始,如下所示:
"structuredQuery": {
"from": [
{
"collectionId": "objects"
}
],
"orderBy": [
{
"field": {
"fieldPath": "counter"
},
"direction": "DESCENDING"
}
],
"startAt": {
"values": [
{
"integerValue": 15
}
]
}
}
我希望从光标分页中受益,但不幸的是,如果我将startAt
值更改为referenceValue
,即使查询成功执行,查询结果也不会反映这一点。
"startAt": {
"values": [
{
"referenceValue": "projects/.../databases/(default)/documents/objects/OjvmBvvQ9TkyyQiJ4ExJ"
}
]
}
我是否遗漏了与SDK示例不同的工作方式?
请注意,它不是文档引用,而是可以用作查询光标的文档快照。快照包括startAt
所需的字段值。SDK获取文档快照,提取字段值,并将这些值传递给startAt
。
您可以在createCursor
和extractFieldValues
中看到Node.js客户端库正在执行此操作。