Как ссылки на документы можно использовать для API-интерфейса Firestore [runQuery.startAt]? - PullRequest
0 голосов
/ 26 февраля 2020

При использовании Firestore REST API для результатов заказа и фильтров, я не могу использовать курсор / опорное значение для значения * * 1001. Я чувствую, что это возможно, видя это в примерах пагинации Firestore, основанной на курсоре, подробно в их SDK: https://firebase.google.com/docs/firestore/query-data/query-cursors

У меня есть запрос, который использует orderBy на целочисленное поле в документе. Я могу успешно начать с указанного c целочисленного значения для этого запроса, например так:

"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?

1 Ответ

0 голосов
/ 26 февраля 2020

Обратите внимание, что это не ссылка на документ, а снимок документа, который можно использовать в качестве курсора запроса. Снимок содержит значения полей, необходимые для startAt. SDK делают снимок документа, извлекают значения полей и передают эти значения в startAt.

. Вы можете увидеть, как клиентская библиотека Node.js делает это здесь в createCursor и extractFieldValues.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...