Sdílet prostřednictvím


Výsledky řazení v GraphQL (orderBy)

Řazení definuje sekvenci vrácených záznamů a podporuje stabilní stránkování. V GraphQL používá orderBy tvůrce rozhraní DATA API (DAB) argument k řazení výsledků před použitím first nebo after. Pokud vynecháte orderBy, jazyk DAB ve výchozím nastavení seřadí podle primárního klíče (vzestupně).

Poznámka:

Složené primární klíče jsou seřazené podle pořadí sloupců databáze.

Přejděte do verze REST tohoto dokumentu.

Přehled

Koncepce Description
Argument orderBy
Směrové hodnoty ASC, DESC
Výchozí pořadí Primární klíč vzestupně
Pořadí více polí Seřazeno podle deklarovaného pořadí vlastností objektu
Svázání Automaticky připojená pole zbývajících primárních klíčů

Vzor použití

query {
  books(orderBy: { year: DESC, title: ASC }, first: 5) {
    items {
      id
      title
      year
    }
  }
}

Koncepční SQL

SELECT TOP (5)
  id,
  sku_title AS title,
  year
FROM dbo.books
ORDER BY year DESC, sku_title ASC, id ASC;

Ukázková odpověď

{
  "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 }
      ]
    }
  }
}

Chování pole

Aspekt Chování
Typ vstupu Generování *OrderByInput výčtu skalárních polí
Směr výčtu ASC, DESC
Složené pořadí Priorita se řídí pořadím deklarace.
Směr null Vyloučí pole z řazení (title: null)
Neznámé pole Vygeneruje chybu ověření GraphQL.

Příklad ignorování pole

query {
  books(orderBy: { title: null, id: DESC }) {
    items { id title }
  }
}

Neplatné struktury

GraphQL zakazuje logické operátory (and, or) uvnitř orderBy. Například následující chyba způsobí chybu ověření:

books(orderBy: { or: { id: ASC } })

Příklad použití proměnné

query ($dir: OrderBy) {
  books(orderBy: { id: $dir }, first: 4) {
    items { id title }
  }
}

Variables

{ "dir": "DESC" }

Relevantní konfigurace

{
  "entities": {
    "Book": {
      "source": {
        "object": "dbo.books",
        "type": "table"
      },
      "mappings": {
        "sku_title": "title"
      }
    }
  }
}

Příklad konfigurace

{
  "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" ]
        }
      }
    }
  }
}

Viz také

Koncepce REST GraphQL Účel
Projection $select items Výběr polí, která se mají vrátit
Filtering $filter filtr Omezení řádků podle podmínky
Řazení $orderby orderBy Definování pořadí řazení
Velikost stránky $first first Omezení počtu položek na stránku
Pokračování $after po Pokračovat z poslední stránky pomocí kurzoru

Poznámka:

Klíčová slova REST začínají následujícími konvencemi $OData.