← Аналитика / analytics / graphql-api / features
Пагинация
Постраничная навигация, то есть разделение результатов запроса на более мелкие части, выполняется с помощью limit, orderBy, и параметров фильтрации. GraphQL Analytics API не поддерживает курсоры для постраничной навигации.
limit(целое число) определяет, сколько записей нужно вернуть.orderBy(строка) определяет порядок сортировки данных.
Запрос страниц без курсоров
В наших примерах предполагается, что date и clientCountryName связи уникальны.
Получите первые n результаты запроса
Чтобы ограничить количество результатов, добавьте limit параметр как целое число. Например, чтобы запросить первые две записи:
firewallEventsAdaptive (limit: 2, orderBy: [datetime_ASC, clientCountryName_ASC]) {
datetime
clientCountryName
}Ответ
{
"firewallEventsAdaptive" : [
{
"datetime": "2018-11-12T00:00:00Z",
"clientCountryName": "UM"
},
{
"datetime": "2018-11-12T00:00:00Z",
"clientCountryName": "US"
}
]
}Запрос следующей страницы с помощью фильтров
Чтобы получить следующий n результатов укажите фильтр, исключающий последний результат предыдущего запроса. Используя предыдущий пример, это можно сделать, добавив оператор больше чем (_gt) к clientCountryName поле и оператор больше или равно (_geq) к datetime поле. Именно здесь важна точность указания порядка сортировки. При более детальном порядке сортировки вероятность пропустить результаты ниже.
firewallEventsAdaptive (limit: 2, orderBy: [datetime_ASC, clientCountryName_ASC], filter: {datetime_geq: "2018-11-12T00:00:00Z", clientCountryName_gt: "US"}) {
datetime
clientCountryName
}Ответ
{
"firewallEventsAdaptive" : [
{
"datetime": "2018-11-12T00:00:00Z",
"clientCountryName": "UY"
},
{
"datetime": "2018-11-12T00:00:00Z",
"clientCountryName": "UZ"
}
]
}Запрос предыдущей страницы
Чтобы получить предыдущий n результатов переверните фильтры и порядок сортировки.
firewallEventsAdaptive (limit: 2, orderBy: [datetime_DESC, clientCountryName_DESC, filter: {datetime_leq: "2018-11-12T00:00:00Z", clientCountryName_lt: "UY"}]) {
datetime
clientCountryName
}Ответ
{
"firewallEventsAdaptive" : [
{
"datetime": "2018-11-12T00:00:00Z",
"clientCountryName": "US"
},
{
"datetime": "2018-11-12T00:00:00Z",
"clientCountryName": "UM"
}
]
}