Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Упорядочивание результатов в GraphQL (
Порядок определяет последовательность возвращаемых записей и поддерживает стабильную разбивку на страницы. В GraphQL построитель API данных (DAB) использует orderBy аргумент для сортировки результатов перед применением first или after. Если не указано orderBy, DAB по умолчанию выполняет сортировку по первичному ключу (возрастанию).
Замечание
Составные первичные ключи упорядочены по последовательности столбцов базы данных.
Перейдите к версии REST этого документа.
Обзор
| Понятие | Description |
|---|---|
| Аргумент | orderBy |
| Значения направления |
ASC, DESC |
| Порядок по умолчанию | Возрастание первичного ключа |
| Порядок нескольких полей | Упорядочено объявленным порядком свойств объекта |
| Тай-брейк | Остальные поля первичного ключа добавляются автоматически |
Шаблон использования
query {
books(orderBy: { year: DESC, title: ASC }, first: 5) {
items {
id
title
year
}
}
}
Концептуальный SQL
SELECT TOP (5)
id,
sku_title AS title,
year
FROM dbo.books
ORDER BY year DESC, sku_title ASC, id ASC;
Пример ответа
{
"data": {
"books": {
"items": [
{ "id": 7, "title": "Dune Messiah", "year": 1969 },
{ "id": 6, "title": "Dune", "year": 1965 },
{ "id": 3, "title": "Foundation", "year": 1951 },
{ "id": 1, "title": "I, Robot", "year": 1950 },
{ "id": 8, "title": "The Martian Chronicles", "year": 1950 }
]
}
}
}
Поведение полей
| Аспект | Поведение |
|---|---|
| Тип входных данных | Созданное перечисление *OrderByInput скалярных полей |
| Перечисление направления |
ASC, DESC |
| Составной порядок | Приоритет следует за порядком объявления |
| Направление NULL | Исключает поле из сортировки (title: null) |
| Неизвестное поле | Создает ошибку проверки GraphQL |
Пример пропуска поля
query {
books(orderBy: { title: null, id: DESC }) {
items { id title }
}
}
Недопустимые структуры
GraphQL запрещает логические операторы (and, orвнутри orderBy). Например, в следующем случае возникает ошибка проверки:
books(orderBy: { or: { id: ASC } })
Пример использования переменной
query ($dir: OrderBy) {
books(orderBy: { id: $dir }, first: 4) {
items { id title }
}
}
Variables
{ "dir": "DESC" }
Соответствующая конфигурация
{
"entities": {
"Book": {
"source": {
"object": "dbo.books",
"type": "table"
},
"mappings": {
"sku_title": "title"
}
}
}
}
Пример конфигурации
{
"runtime": {
"pagination": {
"default-page-size": 100,
"max-page-size": 100000
}
},
"entities": {
"Book": {
"source": {
"type": "table",
"object": "dbo.books"
},
"mappings": {
"sku_title": "title",
"sku_price": "price"
},
"relationships": {
"book_category": {
"cardinality": "one",
"target.entity": "Category",
"source.fields": [ "category_id" ],
"target.fields": [ "id" ]
}
}
},
"Category": {
"source": {
"type": "table",
"object": "dbo.categories"
},
"relationships": {
"category_books": {
"cardinality": "many",
"target.entity": "Book",
"source.fields": [ "id" ],
"target.fields": [ "category_id" ]
}
}
}
}
}
См. также
| Понятие | REST | GraphQL | Цель |
|---|---|---|---|
| Projection | $select | items | Выбор возвращаемых полей |
| Filtering | $filter | фильтр | Ограничение строк по условию |
| Сортировка | $orderby | orderBy | Определение порядка сортировки |
| Размер страницы | $first | first | Ограничение количества элементов на страницу |
| Продолжение | $after | после | Продолжить с последней страницы с помощью курсора |
Замечание
Ключевые слова REST начинаются с $следующих соглашений OData.