Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mengurutkan hasil dalam GraphQL (
Pengurutan menentukan urutan rekaman yang dikembalikan dan mendasar penomoran halaman yang stabil. Di GraphQL, penyusun API Data (DAB) menggunakan orderBy argumen untuk mengurutkan hasil sebelum menerapkan first atau after. Jika Anda menghilangkan orderBy, DAB default untuk mengurutkan menurut kunci primer (naik).
Nota
Kunci primer komposit diurutkan menurut urutan kolom databasenya.
Buka versi REST dokumen ini.
Gambaran Umum
| Konsep | Description |
|---|---|
| Argumen | orderBy |
| Nilai arah |
ASC, DESC |
| Urutan default | Naik kunci primer |
| Urutan multi-bidang | Diurutkan menurut urutan properti objek yang dideklarasikan |
| Tie-break | Bidang kunci utama yang tersisa ditambahkan secara otomatis |
Pola penggunaan
query {
books(orderBy: { year: DESC, title: ASC }, first: 5) {
items {
id
title
year
}
}
}
SQL Konseptual
SELECT TOP (5)
id,
sku_title AS title,
year
FROM dbo.books
ORDER BY year DESC, sku_title ASC, id ASC;
Contoh tanggapan
{
"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 }
]
}
}
}
Perilaku bidang
| Aspek | Perilaku |
|---|---|
| Jenis input |
*OrderByInput Menghasilkan bidang skalar enumerasi |
| Enum arah |
ASC, DESC |
| Urutan komposit | Prioritas mengikuti urutan deklarasi |
| Arah null | Mengecualikan bidang dari pengurutan (title: null) |
| Bidang tidak diketahui | Menghasilkan kesalahan validasi GraphQL |
Contoh mengabaikan bidang
query {
books(orderBy: { title: null, id: DESC }) {
items { id title }
}
}
Struktur tidak valid
GraphQL melarang operator logis (and, or) di dalam orderBy. Misalnya, berikut ini menghasilkan kesalahan validasi:
books(orderBy: { or: { id: ASC } })
Contoh menggunakan variabel
query ($dir: OrderBy) {
books(orderBy: { id: $dir }, first: 4) {
items { id title }
}
}
Variables
{ "dir": "DESC" }
Konfigurasi yang relevan
{
"entities": {
"Book": {
"source": {
"object": "dbo.books",
"type": "table"
},
"mappings": {
"sku_title": "title"
}
}
}
}
Konfigurasi contoh
{
"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" ]
}
}
}
}
}
Lihat juga
| Konsep | REST | GraphQL | Tujuan |
|---|---|---|---|
| Projection | $select | items | Pilih bidang mana yang akan dikembalikan |
| Penyaringan | $filter | saringan | Membatasi baris menurut kondisi |
| Pengurutan | $orderby | orderBy | Tentukan urutan pengurutan |
| Ukuran halaman | $first | first | Membatasi jumlah item per halaman |
| Kelanjutan | $after | sesudah | Lanjutkan dari halaman terakhir menggunakan kursor |
Nota
Kata kunci REST dimulai dengan $, mengikuti konvensi OData.