Kueri - AWS AppSync

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kueri

Objek Query permintaan memungkinkan Anda memberi tahu AWS AppSync DynamoDB resolver untuk membuat Query permintaan ke DynamoDB, dan memungkinkan Anda untuk menentukan yang berikut:

  • Ekspresi kunci

  • Indeks mana yang akan digunakan

  • Filter tambahan apa pun

  • Berapa banyak item yang akan dikembalikan

  • Apakah akan menggunakan pembacaan yang konsisten

  • arah kueri (maju atau mundur)

  • Token pagination

Objek Query permintaan memiliki struktur berikut:

type DynamoDBQueryRequest = { operation: 'Query'; query: { expression: string; expressionNames?: { [key: string]: string }; expressionValues?: { [key: string]: any }; }; index?: string; nextToken?: string; limit?: number; scanIndexForward?: boolean; consistentRead?: boolean; select?: 'ALL_ATTRIBUTES' | 'ALL_PROJECTED_ATTRIBUTES' | 'SPECIFIC_ATTRIBUTES'; filter?: { expression: string; expressionNames?: { [key: string]: string }; expressionValues?: { [key: string]: any }; }; projection?: { expression: string; expressionNames?: { [key: string]: string }; }; };

Bidang didefinisikan sebagai berikut:

Bidang kueri

operation

Operasi DynamoDB untuk melakukan. Untuk melakukan operasi Query DynamoDB, ini harus diatur ke. Query Nilai ini diperlukan.

query

queryBagian ini memungkinkan Anda menentukan ekspresi kondisi kunci yang menjelaskan item mana yang akan diambil dari DynamoDB. Untuk informasi selengkapnya tentang cara menulis ekspresi kondisi kunci, lihat dokumentasi DynamoDB KeyConditions . Bagian ini harus ditentukan.

expression

Ekspresi kueri. Bidang ini harus ditentukan.

expressionNames

Substitusi untuk placeholder nama atribut ekspresi, dalam bentuk pasangan kunci-nilai. Kunci sesuai dengan placeholder nama yang digunakan dalamexpression, dan nilainya harus berupa string yang sesuai dengan nama atribut item di DynamoDB. Bidang ini bersifat opsional, dan seharusnya hanya diisi dengan substitusi untuk placeholder nama atribut ekspresi yang digunakan dalam. expression

expressionValues

Substitusi untuk placeholder nilai atribut ekspresi, dalam bentuk pasangan kunci-nilai. Kunci sesuai dengan placeholder nilai yang digunakan dalamexpression, dan nilainya harus berupa nilai yang diketik. Untuk informasi selengkapnya tentang cara menentukan “nilai yang diketik”, lihat Mengetik sistem (pemetaan permintaan). Nilai ini diperlukan. Bidang ini bersifat opsional, dan seharusnya hanya diisi dengan substitusi untuk placeholder nilai atribut ekspresi yang digunakan dalam. expression

filter

Filter tambahan yang dapat digunakan untuk memfilter hasil dari DynamoDB sebelum dikembalikan. Untuk informasi selengkapnya tentang filter, lihat Menyaring. Bidang ini bersifat opsional.

index

Nama indeks untuk query. Operasi query DynamoDB memungkinkan Anda untuk memindai Indeks Sekunder Lokal dan Indeks Sekunder Global selain indeks kunci utama untuk kunci hash. Jika ditentukan, ini memberitahu DynamoDB untuk query indeks tertentu. Jika dihilangkan, indeks kunci utama ditanyakan.

nextToken

Token pagination untuk melanjutkan kueri sebelumnya. Ini akan diperoleh dari kueri sebelumnya. Bidang ini bersifat opsional.

limit

Jumlah maksimum item untuk dievaluasi (tidak selalu merupakan jumlah item yang cocok). Bidang ini bersifat opsional.

scanIndexForward

Boolean yang menunjukkan apakah akan melakukan kueri maju atau mundur. Bidang ini opsional, dan defaultnya. true

consistentRead

Boolean yang menunjukkan apakah akan menggunakan pembacaan yang konsisten saat menanyakan DynamoDB. Bidang ini opsional, dan defaultnya. false

select

Secara default, AWS AppSync DynamoDB resolver hanya mengembalikan atribut yang diproyeksikan ke dalam indeks. Jika lebih banyak atribut diperlukan, Anda dapat mengatur bidang ini. Bidang ini bersifat opsional. Nilai yang didukung adalah:

ALL_ATTRIBUTES

Mengembalikan semua atribut item dari tabel tertentu atau indeks. Jika Anda menanyakan indeks sekunder lokal, DynamoDB mengambil seluruh item dari tabel induk untuk setiap item yang cocok dalam indeks. Jika indeks dikonfigurasi untuk memproyeksikan semua atribut item, semua data dapat diperoleh dari indeks sekunder lokal dan tidak diperlukan pengambilan.

ALL_PROJECTED_ATTRIBUTES

Diizinkan hanya saat menanyakan indeks. Mengambil semua atribut yang telah diproyeksikan ke dalam indeks. Jika indeks dikonfigurasi untuk memproyeksikan semua atribut, nilai pengembalian ini setara dengan menentukanALL_ATTRIBUTES.

SPECIFIC_ATTRIBUTES

Mengembalikan hanya atribut yang tercantum dalam projection'sexpression. Nilai pengembalian ini setara dengan menentukan projection's expression tanpa menentukan nilai apa pun untuk. Select

projection

Proyeksi yang digunakan untuk menentukan atribut untuk kembali dari operasi DynamoDB. Untuk informasi selengkapnya tentang proyeksi, lihat Proyeksi. Bidang ini bersifat opsional.

Hasil dari DynamoDB secara otomatis diubah menjadi GraphQL dan tipe primitif JSON dan tersedia dalam hasil konteks (). context.result

Untuk informasi selengkapnya tentang konversi tipe DynamoDB, lihat Mengetik sistem (pemetaan respons).

Untuk informasi selengkapnya tentang JavaScript resolver, lihat ikhtisar JavaScript resolver.

Hasilnya memiliki struktur sebagai berikut:

{ items = [ ... ], nextToken = "a pagination token", scannedCount = 10 }

Bidang didefinisikan sebagai berikut:

items

Daftar yang berisi item yang dikembalikan oleh query DynamoDB.

nextToken

Jika mungkin ada lebih banyak hasil, nextToken berisi token pagination yang dapat Anda gunakan dalam permintaan lain. Perhatikan bahwa AWS AppSync mengenkripsi dan mengaburkan token pagination yang dikembalikan dari DynamoDB. Ini mencegah data tabel Anda bocor secara tidak sengaja ke penelepon. Perhatikan juga bahwa token pagination ini tidak dapat digunakan di berbagai fungsi atau resolver.

scannedCount

Jumlah item yang cocok dengan ekspresi kondisi kueri, sebelum ekspresi filter (jika ada) diterapkan.

Contoh

Contoh berikut adalah handler permintaan fungsi untuk query GraphQL. getPosts(owner: ID!)

Dalam contoh ini, indeks sekunder global pada tabel ditanyakan untuk mengembalikan semua posting yang dimiliki oleh ID yang ditentukan.

import { util } from '@aws-appsync/utils'; export function request(ctx) { const { owner } = ctx.args; return { operation: 'Query', query: { expression: 'ownerId = :ownerId', expressionValues: util.dynamodb.toMapValues({ ':ownerId': owner }), }, index: 'owner-index', }; }

Untuk informasi selengkapnya tentang DynamoDB, lihat Query API dokumentasi DynamoDB. API