Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Built-in modul
Modul adalah bagian dari APPSYNC_JS runtime dan menyediakan utilitas untuk membantu menulis JavaScript resolver dan fungsi. Untuk contoh dan contoh, lihat repositori aws-app
Fungsi modul DynamoDB
Fungsi modul DynamoDB memberikan pengalaman yang disempurnakan saat berinteraksi dengan sumber data DynamoDB. Anda dapat membuat permintaan terhadap sumber data DynamoDB menggunakan fungsi dan tanpa menambahkan pemetaan tipe.
Modul diimpor menggunakan@aws-appsync/utils/dynamodb:
// Modules are imported using@aws-appsync/utils/dynamodbimport * as ddb from '@aws-appsync/utils/dynamodb';
Fungsi
-
get<T>(payload: GetInput): DynamoDBGetItemRequest -
Tip
Lihat Masukan untuk informasi tentang GetInput.
Menghasilkan
DynamoDBGetItemRequestobjek untuk membuat GetItem permintaan ke DynamoDB.import { get } from '@aws-appsync/utils/dynamodb'; export function request(ctx) { return get({ key: { id: ctx.args.id } }); } -
put<T>(payload): DynamoDBPutItemRequest -
Menghasilkan
DynamoDBPutItemRequestobjek untuk membuat PutItem permintaan ke DynamoDB.import * as ddb from '@aws-appsync/utils/dynamodb' export function request(ctx) { return ddb.put({ key: { id: util.autoId() }, item: ctx.args }); } remove<T>(payload): DynamoDBDeleteItemRequest-
Menghasilkan
DynamoDBDeleteItemRequestobjek untuk membuat DeleteItem permintaan ke DynamoDB.import * as ddb from '@aws-appsync/utils/dynamodb'; export function request(ctx) { return ddb.remove({ key: { id: ctx.args.id } }); } scan<T>(payload): DynamoDBScanRequest-
Menghasilkan a
DynamoDBScanRequestuntuk membuat permintaan Scan ke DynamoDB.import * as ddb from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const { limit = 10, nextToken } = ctx.args; return ddb.scan({ limit, nextToken }); } sync<T>(payload): DynamoDBSyncRequest-
Menghasilkan
DynamoDBSyncRequestobjek untuk membuat permintaan Sin kronisasi. Permintaan hanya menerima data yang diubah sejak kueri terakhir (pembaruan delta). Permintaan hanya dapat dibuat ke sumber data DynamoDB berversi.import * as ddb from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const { limit = 10, nextToken, lastSync } = ctx.args; return ddb.sync({ limit, nextToken, lastSync }); } update<T>(payload): DynamoDBUpdateItemRequest-
Menghasilkan
DynamoDBUpdateItemRequestobjek untuk membuat UpdateItem permintaan ke DynamoDB.
Operasi
Pembantu operasi memungkinkan Anda untuk mengambil tindakan tertentu pada bagian data Anda selama pembaruan. Untuk memulai, impor operations dari@aws-appsync/utils/dynamodb:
// Modules are imported using operationsimport {operations} from '@aws-appsync/utils/dynamodb';
-
add<T>(payload) -
Fungsi pembantu yang menambahkan item atribut baru saat memperbarui DynamoDB.
Contoh
Untuk menambahkan alamat (jalan, kota, dan kode pos) ke item DynamoDB yang ada menggunakan nilai ID:
import { update, operations } from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const updateObj = { address: operations.add({ street1: '123 Main St', city: 'New York', zip: '10001', }), }; return update({ key: { id: 1 }, update: updateObj }); } append <T>(payload)-
Fungsi pembantu yang menambahkan payload ke daftar yang ada di DynamoDB.
Contoh
Untuk menambahkan ID teman (
newFriendIds) yang baru ditambahkan ke daftar teman yang ada (friendsIds) selama pembaruan:import { update, operations } from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const newFriendIds = [101, 104, 111]; const updateObj = { friendsIds: operations.append(newFriendIds), }; return update({ key: { id: 1 }, update: updateObj }); } decrement (by?)-
Fungsi pembantu yang mengurangi nilai atribut yang ada dalam item saat memperbarui DynamoDB.
Contoh
Untuk mengurangi counter teman (
friendsCount) sebesar 10:import { update, operations } from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const updateObj = { friendsCount: operations.decrement(10), }; return update({ key: { id: 1 }, update: updateObj }); } increment (by?)-
Fungsi pembantu yang menambah nilai atribut yang ada dalam item saat memperbarui DynamoDB.
Contoh
Untuk menambah counter friends (
friendsCount) sebesar 10:import { update, operations } from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const updateObj = { friendsCount: operations.increment(10), }; return update({ key: { id: 1 }, update: updateObj }); } prepend <T>(payload)-
Fungsi pembantu yang ditambahkan ke daftar yang ada di DynamoDB.
Contoh
Untuk menambahkan ID teman (
newFriendIds) yang baru ditambahkan ke daftar teman yang ada (friendsIds) selama pembaruan:import { update, operations } from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const newFriendIds = [101, 104, 111]; const updateObj = { friendsIds: operations.prepend(newFriendIds), }; return update({ key: { id: 1 }, update: updateObj }); } replace <T>(payload)-
Fungsi pembantu yang menggantikan atribut yang ada saat memperbarui item di DynamoDB. Ini berguna ketika Anda ingin memperbarui seluruh objek atau subobject dalam atribut dan bukan hanya kunci dalam payload.
Contoh
Untuk mengganti alamat (jalan, kota, dan kode pos) dalam
infoobjek:import { update, operations } from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const updateObj = { info: { address: operations.replace({ street1: '123 Main St', city: 'New York', zip: '10001', }), }, }; return update({ key: { id: 1 }, update: updateObj }); } updateListItem <T>(payload, index)-
Fungsi pembantu yang menggantikan item dalam daftar.
Contoh
Dalam lingkup update (
newFriendIds), contoh ini digunakanupdateListItemuntuk memperbarui nilai ID item kedua (index:1, new ID:102) dan item ketiga (index:2, new ID:112) dalam daftar (friendsIds).import { update, operations as ops } from '@aws-appsync/utils/dynamodb'; export function request(ctx) { const newFriendIds = [ ops.updateListItem('102', 1), ops.updateListItem('112', 2) ]; const updateObj = { friendsIds: newFriendIds }; return update({ key: { id: 1 }, update: updateObj }); }
Masukan
-
Type GetInput<T> -
GetInput<T>: { consistentRead?: boolean; key: DynamoDBKey<T>; }Jenis Deklarasi
-
consistentRead?: boolean(opsional)Sebuah boolean opsional untuk menentukan apakah Anda ingin melakukan pembacaan yang sangat konsisten dengan DynamoDB.
-
key: DynamoDBKey<T>(diperlukan)Parameter yang diperlukan yang menentukan kunci item di DynamoDB. Item DynamoDB mungkin memiliki kunci hash tunggal atau kunci hash dan pengurutan.
-
Type PutInput<T>-
PutInput<T>: { _version?: number; condition?: DynamoDBFilterObject<T> | null; customPartitionKey?: string; item: Partial<T>; key: DynamoDBKey<T>; populateIndexFields?: boolean; }Jenis Deklarasi
-
_version?: number(opsional) -
condition?: DynamoDBFilterObject<T> | null(opsional)Ketika Anda menempatkan objek dalam tabel DynamoDB, Anda dapat secara opsional menentukan ekspresi bersyarat yang mengontrol apakah permintaan harus berhasil atau tidak berdasarkan status objek yang sudah ada di DynamoDB sebelum operasi dilakukan.
-
customPartitionKey?: string(opsional)Saat diaktifkan, nilai string ini mengubah format
ds_skdands_pkcatatan yang digunakan oleh tabel sinkronisasi delta saat pembuatan versi telah diaktifkan. Saat diaktifkan, pemrosesanpopulateIndexFieldsentri juga diaktifkan. -
item: Partial<T>(diperlukan)Sisa atribut item yang akan ditempatkan ke DynamoDB.
-
key: DynamoDBKey<T>(diperlukan)Parameter yang diperlukan yang menentukan kunci item di DynamoDB tempat put akan dilakukan. Item DynamoDB mungkin memiliki kunci hash tunggal atau kunci hash dan pengurutan.
-
populateIndexFields?: boolean(opsional)Nilai boolean yang, ketika diaktifkan bersama dengan
customPartitionKey, membuat entri baru untuk setiap catatan dalam tabel sinkronisasi delta, khususnya di kolomgsi_ds_pkdangsi_ds_sk. Untuk informasi selengkapnya, lihat Deteksi dan sinkronisasi konflik di Panduan AWS AppSync Pengembang.
-
Type QueryInput<T>-
QueryInput<T>: ScanInput<T> & { query: DynamoDBKeyCondition<Required<T>>; }Jenis Deklarasi
-
query: DynamoDBKeyCondition<Required<T>>(diperlukan)Menentukan kondisi kunci yang menjelaskan item untuk kueri. Untuk indeks tertentu, kondisi untuk kunci partisi harus kesetaraan dan kunci pengurutan perbandingan atau
beginsWith(ketika itu string). Hanya tipe angka dan string yang didukung untuk partisi dan kunci pengurutan.Contoh
Ambil
Userjenis di bawah ini:type User = { id: string; name: string; age: number; isVerified: boolean; friendsIds: string[] }Kueri hanya dapat menyertakan bidang berikut:
id,name, danage:const query: QueryInput<User> = { name: { eq: 'John' }, age: { gt: 20 }, }
-
Type RemoveInput<T>-
RemoveInput<T>: { _version?: number; condition?: DynamoDBFilterObject<T>; customPartitionKey?: string; key: DynamoDBKey<T>; populateIndexFields?: boolean; }Jenis Deklarasi
-
_version?: number(opsional) -
condition?: DynamoDBFilterObject<T>(opsional)Saat Anda menghapus objek di DynamoDB, Anda dapat secara opsional menentukan ekspresi bersyarat yang mengontrol apakah permintaan harus berhasil atau tidak berdasarkan status objek yang sudah ada di DynamoDB sebelum operasi dilakukan.
Contoh
Contoh berikut adalah
DeleteItemekspresi yang berisi kondisi yang memungkinkan operasi berhasil hanya jika pemilik dokumen cocok dengan pengguna yang membuat permintaan.type Task = { id: string; title: string; description: string; owner: string; isComplete: boolean; } const condition: DynamoDBFilterObject<Task> = { owner: { eq: 'XXXXXXXXXXXXXXXX' }, } remove<Task>({ key: { id: 'XXXXXXXXXXXXXXXX', }, condition, }); -
customPartitionKey?: string(opsional)Saat diaktifkan,
customPartitionKeynilai mengubah formatds_skdands_pkcatatan yang digunakan oleh tabel sinkronisasi delta saat pembuatan versi telah diaktifkan. Saat diaktifkan, pemrosesanpopulateIndexFieldsentri juga diaktifkan. -
key: DynamoDBKey<T>(diperlukan)Parameter wajib yang menentukan kunci item di DynamoDB yang sedang dihapus. Item DynamoDB mungkin memiliki kunci hash tunggal atau kunci hash dan pengurutan.
Contoh
Jika a
Userhanya memiliki kunci hash dengan penggunaid, maka kuncinya akan terlihat seperti ini:type User = { id: number name: string age: number isVerified: boolean } const key: DynamoDBKey<User> = { id: 1, }Jika pengguna tabel memiliki hash key (
id) dan sort key (name), maka kuncinya akan terlihat seperti ini:type User = { id: number name: string age: number isVerified: boolean friendsIds: string[] } const key: DynamoDBKey<User> = { id: 1, name: 'XXXXXXXXXX', } -
populateIndexFields?: boolean(opsional)Nilai boolean yang, ketika diaktifkan bersama dengan
customPartitionKey, membuat entri baru untuk setiap catatan dalam tabel sinkronisasi delta, khususnya di kolomgsi_ds_pkdangsi_ds_sk.
-
Type ScanInput<T>-
ScanInput<T>: { consistentRead?: boolean | null; filter?: DynamoDBFilterObject<T> | null; index?: string | null; limit?: number | null; nextToken?: string | null; scanIndexForward?: boolean | null; segment?: number; select?: DynamoDBSelectAttributes; totalSegments?: number; }Jenis Deklarasi
-
consistentRead?: boolean | null(opsional)Boolean opsional untuk menunjukkan pembacaan yang konsisten saat menanyakan DynamoDB. Nilai default-nya adalah
false. -
filter?: DynamoDBFilterObject<T> | null(opsional)Filter opsional untuk diterapkan pada hasil setelah mengambilnya dari tabel.
-
index?: string | null(opsional)Nama opsional indeks yang akan dipindai.
-
limit?: number | null(opsional)Jumlah maksimum hasil opsional untuk dikembalikan.
-
nextToken?: string | null(opsional)Token pagination opsional untuk melanjutkan kueri sebelumnya. Ini akan diperoleh dari kueri sebelumnya.
-
scanIndexForward?: boolean | null(opsional)Sebuah boolean opsional untuk menunjukkan apakah kueri dilakukan dalam urutan naik atau turun. Secara default, nilai ini diatur ke
true. -
segment?: number(opsional) -
select?: DynamoDBSelectAttributes(opsional)Atribut untuk dikembalikan dari DynamoDB. Secara default, resolver AWS AppSync DynamoDB hanya mengembalikan atribut yang diproyeksikan ke dalam indeks. Nilai yang didukung adalah:
-
ALL_ATTRIBUTESMengembalikan semua atribut item dari tabel atau indeks yang ditentukan. 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_ATTRIBUTESMengembalikan semua atribut yang telah diproyeksikan ke dalam indeks. Jika indeks dikonfigurasi untuk memproyeksikan semua atribut, nilai pengembalian ini setara dengan menentukan
ALL_ATTRIBUTES. -
SPECIFIC_ATTRIBUTESMengembalikan hanya atribut yang tercantum di
ProjectionExpression. Nilai pengembalian ini setara dengan menentukanProjectionExpressiontanpa menentukan nilai apa pun untukAttributesToGet.
-
-
totalSegments?: number(opsional)
-
Type DynamoDBSyncInput<T>-
DynamoDBSyncInput<T>: { basePartitionKey?: string; deltaIndexName?: string; filter?: DynamoDBFilterObject<T> | null; lastSync?: number; limit?: number | null; nextToken?: string | null; }Jenis Deklarasi
-
basePartitionKey?: string(opsional)Kunci partisi dari tabel dasar yang akan digunakan saat melakukan operasi Sinkronisasi. Bidang ini memungkinkan operasi Sinkronisasi dilakukan ketika tabel menggunakan kunci partisi kustom.
-
deltaIndexName?: string(opsional)Indeks yang digunakan untuk operasi Sinkronisasi. Indeks ini diperlukan untuk mengaktifkan operasi Sinkronisasi pada seluruh tabel penyimpanan delta ketika tabel menggunakan kunci partisi khusus. Operasi Sinkronisasi akan dilakukan pada GSI (dibuat pada
gsi_ds_pkdangsi_ds_sk). -
filter?: DynamoDBFilterObject<T> | null(opsional)Filter opsional untuk diterapkan pada hasil setelah mengambilnya dari tabel.
-
lastSync?: number(opsional)Saat itu, dalam zaman milidetik, di mana operasi Sinkronisasi terakhir yang berhasil dimulai. Jika ditentukan, hanya item yang telah berubah setelahnya yang
lastSyncdikembalikan. Bidang ini hanya boleh diisi setelah mengambil semua halaman dari operasi Sinkronisasi awal. Jika dihilangkan, hasil dari tabel dasar akan dikembalikan. Jika tidak, hasil dari tabel delta akan dikembalikan. -
limit?: number | null(opsional)Jumlah item maksimum opsional untuk dievaluasi pada satu waktu. Jika dihilangkan, batas default akan diatur ke
100item. Nilai maksimum untuk bidang ini adalah1000item. -
nextToken?: string | null(opsional)
-
Type DynamoDBUpdateInput<T>-
DynamoDBUpdateInput<T>: { _version?: number; condition?: DynamoDBFilterObject<T>; customPartitionKey?: string; key: DynamoDBKey<T>; populateIndexFields?: boolean; update: DynamoDBUpdateObject<T>; }Jenis Deklarasi
-
_version?: number(opsional) -
condition?: DynamoDBFilterObject<T>(opsional)Saat Anda memperbarui objek di DynamoDB, Anda dapat secara opsional menentukan ekspresi bersyarat yang mengontrol apakah permintaan harus berhasil atau tidak berdasarkan status objek yang sudah ada di DynamoDB sebelum operasi dilakukan.
-
customPartitionKey?: string(opsional)Saat diaktifkan,
customPartitionKeynilai mengubah formatds_skdands_pkcatatan yang digunakan oleh tabel sinkronisasi delta saat pembuatan versi telah diaktifkan. Saat diaktifkan, pemrosesanpopulateIndexFieldsentri juga diaktifkan. -
key: DynamoDBKey<T>(diperlukan)Parameter wajib yang menentukan kunci item di DynamoDB yang sedang diperbarui. Item DynamoDB mungkin memiliki kunci hash tunggal atau kunci hash dan pengurutan.
-
populateIndexFields?: boolean(opsional)Nilai boolean yang, ketika diaktifkan bersama dengan
customPartitionKey, membuat entri baru untuk setiap catatan dalam tabel sinkronisasi delta, khususnya di kolomgsi_ds_pkdangsi_ds_sk. -
update: DynamoDBUpdateObject<T>Sebuah objek yang menentukan atribut yang akan diperbarui bersama dengan nilai-nilai baru untuk mereka. Objek pembaruan dapat digunakan dengan
add,remove,replace,increment,decrement,append,prepend,updateListItem.
-
Fungsi modul Amazon RDS
Fungsi modul Amazon RDS memberikan pengalaman yang disempurnakan saat berinteraksi dengan database yang dikonfigurasi dengan Amazon RDS Data API. Modul ini diimpor menggunakan@aws-appsync/utils/rds:
import * as rds from '@aws-appsync/utils/rds';
Fungsi juga dapat diimpor secara individual. Misalnya, impor di bawah ini menggunakansql:
import { sql } from '@aws-appsync/utils/rds';
Fungsi
Anda dapat menggunakan pembantu utilitas modul AWS AppSync RDS untuk berinteraksi dengan database Anda.
selectUtilitas membuat SELECT pernyataan untuk menanyakan database relasional Anda.
Penggunaan dasar
Dalam bentuk dasarnya, Anda dapat menentukan tabel yang ingin Anda kueri:
import { select, createPgStatement } from '@aws-appsync/utils/rds'; export function request(ctx) { // Generates statement: // "SELECT * FROM "persons" return createPgStatement(select({table: 'persons'})); }
Perhatikan bahwa Anda juga dapat menentukan skema dalam pengidentifikasi tabel Anda:
import { select, createPgStatement } from '@aws-appsync/utils/rds'; export function request(ctx) { // Generates statement: // SELECT * FROM "private"."persons" return createPgStatement(select({table: 'private.persons'})); }
Menentukan kolom
Anda dapat menentukan kolom dengan columns properti. Jika ini tidak disetel ke nilai, defaultnya menjadi: *
export function request(ctx) { // Generates statement: // SELECT "id", "name" // FROM "persons" return createPgStatement(select({ table: 'persons', columns: ['id', 'name'] })); }
Anda dapat menentukan tabel kolom juga:
export function request(ctx) { // Generates statement: // SELECT "id", "persons"."name" // FROM "persons" return createPgStatement(select({ table: 'persons', columns: ['id', 'persons.name'] })); }
Batas dan offset
Anda dapat menerapkan limit dan offset ke kueri:
export function request(ctx) { // Generates statement: // SELECT "id", "name" // FROM "persons" // LIMIT :limit // OFFSET :offset return createPgStatement(select({ table: 'persons', columns: ['id', 'name'], limit: 10, offset: 40 })); }
Urutkan berdasarkan
Anda dapat mengurutkan hasil Anda dengan orderBy properti. Menyediakan array objek yang menentukan kolom dan dir properti opsional:
export function request(ctx) { // Generates statement: // SELECT "id", "name" FROM "persons" // ORDER BY "name", "id" DESC return createPgStatement(select({ table: 'persons', columns: ['id', 'name'], orderBy: [{column: 'name'}, {column: 'id', dir: 'DESC'}] })); }
Filter
Anda dapat membuat filter dengan menggunakan objek kondisi khusus:
export function request(ctx) { // Generates statement: // SELECT "id", "name" // FROM "persons" // WHERE "name" = :NAME return createPgStatement(select({ table: 'persons', columns: ['id', 'name'], where: {name: {eq: 'Stephane'}} })); }
Anda juga dapat menggabungkan filter:
export function request(ctx) { // Generates statement: // SELECT "id", "name" // FROM "persons" // WHERE "name" = :NAME and "id" > :ID return createPgStatement(select({ table: 'persons', columns: ['id', 'name'], where: {name: {eq: 'Stephane'}, id: {gt: 10}} })); }
Anda juga dapat membuat OR pernyataan:
export function request(ctx) { // Generates statement: // SELECT "id", "name" // FROM "persons" // WHERE "name" = :NAME OR "id" > :ID return createPgStatement(select({ table: 'persons', columns: ['id', 'name'], where: { or: [ { name: { eq: 'Stephane'} }, { id: { gt: 10 } } ]} })); }
Anda juga dapat meniadakan kondisi dengan: not
export function request(ctx) { // Generates statement: // SELECT "id", "name" // FROM "persons" // WHERE NOT ("name" = :NAME AND "id" > :ID) return createPgStatement(select({ table: 'persons', columns: ['id', 'name'], where: { not: [ { name: { eq: 'Stephane'} }, { id: { gt: 10 } } ]} })); }
Anda juga dapat menggunakan operator berikut untuk membandingkan nilai:
| Operator | Deskripsi | Jenis nilai yang mungkin |
|---|---|---|
| eq | Sama | angka, string, boolean |
| no | Tidak sama | angka, string, boolean |
| le | Kurang dari atau sama | nomor, string |
| lt | Kurang dari | nomor, string |
| ge | Lebih besar dari atau sama | nomor, string |
| gt | Lebih besar dari | nomor, string |
| mengandung | Suka | string |
| Tidak mengandung | Tidak seperti | string |
| MulaiDengan | Dimulai dengan awalan | string |
| antara | Antara dua nilai | nomor, string |
| Atribut Ada | Atributnya bukan null | angka, string, boolean |
| ukuran | memeriksa panjang elemen | string |
insertUtilitas menyediakan cara mudah untuk memasukkan item baris tunggal dalam database Anda dengan INSERT operasi.
Penyisipan item tunggal
Untuk menyisipkan item, tentukan tabel dan kemudian masukkan objek nilai Anda. Kunci objek dipetakan ke kolom tabel Anda. Nama kolom secara otomatis lolos, dan nilai dikirim ke database menggunakan peta variabel:
import { insert, createMySQLStatement } from '@aws-appsync/utils/rds'; export function request(ctx) { const { input: values } = ctx.args; const insertStatement = insert({ table: 'persons', values }); // Generates statement: // INSERT INTO `persons`(`name`) // VALUES(:NAME) return createMySQLStatement(insertStatement) }
Kasus penggunaan MySQL
Anda dapat menggabungkan insert diikuti dengan a select untuk mengambil baris yang dimasukkan:
import { insert, select, createMySQLStatement } from '@aws-appsync/utils/rds'; export function request(ctx) { const { input: values } = ctx.args; const insertStatement = insert({ table: 'persons', values }); const selectStatement = select({ table: 'persons', columns: '*', where: { id: { eq: values.id } }, limit: 1, }); // Generates statement: // INSERT INTO `persons`(`name`) // VALUES(:NAME) // and // SELECT * // FROM `persons` // WHERE `id` = :ID return createMySQLStatement(insertStatement, selectStatement) }
Kasus penggunaan Postgres
Dengan Postgres, Anda dapat menggunakan returning* atau array nama kolom:
import { insert, createPgStatement } from '@aws-appsync/utils/rds'; export function request(ctx) { const { input: values } = ctx.args; const insertStatement = insert({ table: 'persons', values, returning: '*' }); // Generates statement: // INSERT INTO "persons"("name") // VALUES(:NAME) // RETURNING * return createPgStatement(insertStatement) }
updateUtilitas ini memungkinkan Anda untuk memperbarui baris yang ada. Anda dapat menggunakan objek kondisi untuk menerapkan perubahan ke kolom yang ditentukan di semua baris yang memenuhi kondisi. Misalnya, katakanlah kita memiliki skema yang memungkinkan kita membuat mutasi ini. Kami ingin memperbarui name of Person dengan id nilai 3 tetapi hanya jika kami telah mengetahuinya (known_since) sejak tahun2000:
mutation Update { updatePerson( input: {id: 3, name: "Jon"}, condition: {known_since: {ge: "2000"}} ) { id name } }
Resolver pembaruan kami terlihat seperti ini:
import { update, createPgStatement } from '@aws-appsync/utils/rds'; export function request(ctx) { const { input: { id, ...values }, condition } = ctx.args; const where = { ...condition, id: { eq: id }, }; const updateStatement = update({ table: 'persons', values, where, returning: ['id', 'name'], }); // Generates statement: // UPDATE "persons" // SET "name" = :NAME, "birthday" = :BDAY, "country" = :COUNTRY // WHERE "id" = :ID // RETURNING "id", "name" return createPgStatement(updateStatement) }
Kita dapat menambahkan cek ke kondisi kita untuk memastikan bahwa hanya baris yang memiliki kunci utama id sama dengan 3 yang diperbarui. Demikian pula, untuk Postgresinserts, Anda dapat menggunakan returning untuk mengembalikan data yang dimodifikasi.
removeUtilitas ini memungkinkan Anda untuk menghapus baris yang ada. Anda dapat menggunakan objek kondisi pada semua baris yang memenuhi kondisi. Perhatikan bahwa itu delete adalah kata kunci yang dicadangkan di JavaScript. removeharus digunakan sebagai gantinya:
import { remove, createPgStatement } from '@aws-appsync/utils/rds'; export function request(ctx) { const { input: { id }, condition } = ctx.args; const where = { ...condition, id: { eq: id } }; const deleteStatement = remove({ table: 'persons', where, returning: ['id', 'name'], }); // Generates statement: // DELETE "persons" // WHERE "id" = :ID // RETURNING "id", "name" return createPgStatement(updateStatement) }
Casting
Dalam beberapa kasus, Anda mungkin ingin lebih spesifik tentang jenis objek yang benar untuk digunakan dalam pernyataan Anda. Anda dapat menggunakan petunjuk tipe yang disediakan untuk menentukan jenis parameter Anda. AWS AppSync mendukung petunjuk tipe yang sama dengan API Data. Anda dapat mentransmisikan parameter Anda dengan menggunakan typeHint fungsi dari AWS AppSync rds modul.
Contoh berikut memungkinkan Anda mengirim array sebagai nilai yang dicetak sebagai objek JSON. Kami menggunakan -> operator untuk mengambil elemen di index 2 dalam array JSON:
import { sql, createPgStatement, toJsonObject, typeHint } from '@aws-appsync/utils/rds'; export function request(ctx) { const arr = ctx.args.list_of_ids const statement = sql`select ${typeHint.JSON(arr)}->2 as value` return createPgStatement(statement) } export function response(ctx) { return toJsonObject(ctx.result)[0][0].value }
Casting juga berguna saat menangani dan membandingkanDATE,TIME, danTIMESTAMP:
import { select, createPgStatement, typeHint } from '@aws-appsync/utils/rds'; export function request(ctx) { const when = ctx.args.when const statement = select({ table: 'persons', where: { createdAt : { gt: typeHint.DATETIME(when) } } }) return createPgStatement(statement) }
Berikut contoh lain yang menunjukkan bagaimana Anda dapat mengirim tanggal dan waktu saat ini:
import { sql, createPgStatement, typeHint } from '@aws-appsync/utils/rds'; export function request(ctx) { const now = util.time.nowFormatted('YYYY-MM-dd HH:mm:ss') return createPgStatement(sql`select ${typeHint.TIMESTAMP(now)}`) }
Petunjuk jenis yang tersedia
-
typeHint.DATE- Parameter yang sesuai dikirim sebagai objek dariDATEtipe ke database. Format yang diterima adalahYYYY-MM-DD. -
typeHint.DECIMAL- Parameter yang sesuai dikirim sebagai objek dariDECIMALtipe ke database. -
typeHint.JSON- Parameter yang sesuai dikirim sebagai objek dariJSONtipe ke database. -
typeHint.TIME- Nilai parameter string yang sesuai dikirim sebagai objek dariTIMEtipe ke database. Format yang diterima adalahHH:MM:SS[.FFF]. -
typeHint.TIMESTAMP- Nilai parameter string yang sesuai dikirim sebagai objek dariTIMESTAMPtipe ke database. Format yang diterima adalahYYYY-MM-DD HH:MM:SS[.FFF]. -
typeHint.UUID- Nilai parameter string yang sesuai dikirim sebagai objek dariUUIDtipe ke database.