

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

# Kueri
<a name="js-aws-appsync-resolver-reference-dynamodb-query"></a>

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
<a name="js-query-list"></a>

### Daftar bidang kueri
<a name="js-query-list-col"></a>

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

** `query` **  
`query`Bagian 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 ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.KeyConditions.html). 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 dalam`expression`, 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 dalam`expression`, dan nilainya harus berupa nilai yang diketik. Untuk informasi selengkapnya tentang cara menentukan “nilai yang diketik”, lihat Mengetik [sistem (pemetaan permintaan)](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-request). 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](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-filter). 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 menentukan`ALL_ATTRIBUTES`.  
**`SPECIFIC_ATTRIBUTES`**  
Mengembalikan hanya atribut yang tercantum dalam `projection`'s`expression`. Nilai pengembalian ini setara dengan menentukan `projection`'s `expression` tanpa menentukan nilai apa pun untuk. `Select`

**`projection`**  
Proyeksi yang digunakan untuk menentukan atribut yang akan dikembalikan dari operasi DynamoDB. Untuk informasi selengkapnya tentang proyeksi, lihat [Proyeksi](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-projections). Bidang ini bersifat opsional.

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

Untuk informasi selengkapnya tentang konversi tipe DynamoDB, [lihat Mengetik sistem (](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-responses)pemetaan respons).

Untuk informasi selengkapnya tentang JavaScript resolver, lihat ikhtisar [JavaScript resolver](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-overview-js.html).

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
<a name="js-id9"></a>

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 API, lihat `Query` dokumentasi [DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html) API.