Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ordenando resultados no GraphQL (
A ordenação define a sequência de registros retornados e sustenta a paginação estável. No GraphQL, o DAB (Construtor de API de Dados) usa o orderBy argumento para classificar os resultados antes de first aplicar ou after. Se você omitir orderBy, o DAB usará como padrão a classificação pela chave primária (crescente).
Observação
As chaves primárias compostas são ordenadas pela sequência de colunas de banco de dados.
Vá para a versão REST deste documento.
Visão geral
| Conceito | Description |
|---|---|
| Argument | orderBy |
| Valores de direção |
ASC, DESC |
| Ordem padrão | Chave primária crescente |
| Ordem de vários campos | Ordenado por ordem de propriedade de objeto declarada |
| Tie-break | Campos de chave primária restantes acrescentados automaticamente |
Padrão de uso
query {
books(orderBy: { year: DESC, title: ASC }, first: 5) {
items {
id
title
year
}
}
}
SQL conceitual
SELECT TOP (5)
id,
sku_title AS title,
year
FROM dbo.books
ORDER BY year DESC, sku_title ASC, id ASC;
Resposta de exemplo
{
"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 }
]
}
}
}
Comportamento de campo
| Aspecto | Comportamento |
|---|---|
| Tipo de entrada | Geração *OrderByInput de campos escalares de enumeração |
| Enumeração de direção |
ASC, DESC |
| Ordem composta | Precedência segue ordem de declaração |
| Direção nula | Exclui o campo da classificação (title: null) |
| Campo desconhecido | Produz um erro de validação do GraphQL |
Exemplo ignorando um campo
query {
books(orderBy: { title: null, id: DESC }) {
items { id title }
}
}
Estruturas inválidas
O GraphQL proíbe operadores lógicos (and, or) dentro orderBy. Por exemplo, o seguinte produz um erro de validação:
books(orderBy: { or: { id: ASC } })
Exemplo usando uma variável
query ($dir: OrderBy) {
books(orderBy: { id: $dir }, first: 4) {
items { id title }
}
}
Variables
{ "dir": "DESC" }
Configuração relevante
{
"entities": {
"Book": {
"source": {
"object": "dbo.books",
"type": "table"
},
"mappings": {
"sku_title": "title"
}
}
}
}
Configuração de exemplo
{
"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" ]
}
}
}
}
}
Consulte também
| Conceito | REST | GraphQL | Propósito |
|---|---|---|---|
| Projection | $select | items | Escolher quais campos retornar |
| Filtragem | $filter | filtro | Restringir linhas por condição |
| Classificação | $orderby | orderBy | Definir a ordem de classificação |
| Tamanho da página | $first | first | Limitar o número de itens por página |
| Continuação | $after | depois | Continuar da última página usando um cursor |
Observação
As palavras-chave REST começam com $, seguindo as convenções OData.