GraphQL'de sonuçları sıralama (orderBy)

Sıralama, döndürülen kayıtların sırasını tanımlar ve kararlı sayfalandırmayı sağlar. GraphQL'de Veri API oluşturucusu (DAB), veya afteruygulamadan first önce sonuçları sıralamak için bağımsız değişkenini kullanırorderBy. atlarsanız orderBy, DAB varsayılan olarak birincil anahtara göre (artan) sıralamayı kullanır.

Uyarı

Bileşik birincil anahtarlar, veritabanı sütun sırasına göre sıralanır.

Bu belgenin REST sürümüne gidin.

Genel Bakış

Konsept Description
Argument orderBy
Yön değerleri ASC, DESC
Varsayılan sipariş Birincil anahtar artan
Çok alanlı sipariş Bildirilen nesne özelliği sırasına göre sıralandı
Kravat kesme Kalan birincil anahtar alanları otomatik olarak eklenir

Kullanım düzeni

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

Kavramsal SQL

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

Örnek yanıt

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

Alan davranışı

Görünüş Davranış
Giriş türü Numaralandıran skaler alanlar oluşturuldu *OrderByInput
Yön sabit listesi ASC, DESC
Bileşik sipariş Öncelik, bildirim sırasını izler
Null yön Alanı sıralamanın dışında tutar (title: null)
Bilinmeyen alan GraphQL doğrulama hatası üretir

Alanı yoksayma örneği

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

Geçersiz yapılar

GraphQL, içinde orderBymantıksal işleçleri (and, or) yasaklar. Örneğin, aşağıdakiler bir doğrulama hatası oluşturur:

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

Değişken kullanma örneği

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

Variables

{ "dir": "DESC" }

İlgili yapılandırma

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

Örnek yapılandırma

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

Ayrıca bakınız

Konsept REST GraphQL Amaç
Projection $select items Döndürülecek alanları seçme
Filtering $filter filtre Satırları koşula göre kısıtlama
Sıralama $orderby orderBy Sıralama düzenini tanımlama
Sayfa Boyutu $first first Sayfa başına öğe sayısını sınırlama
Devam $after sonra İmleç kullanarak son sayfadan devam et

Uyarı

REST anahtar sözcükleri, OData kurallarını izleyerek ile $başlar.