Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
TransactWriteItems
Ob TransactWriteItems jek permintaan memungkinkan Anda memberi tahu fungsi AWS AppSync DynamoDB untuk membuat TransactWriteItems permintaan ke DynamoDB untuk menulis beberapa item, berpotensi ke beberapa tabel. Untuk objek permintaan ini, Anda harus menentukan yang berikut:
-
Nama tabel tujuan dari setiap item permintaan
-
Pengoperasian setiap item permintaan untuk dilakukan. Ada empat jenis operasi yang didukung: PutItem, UpdateItem, DeleteItem, dan ConditionCheck
-
Kunci dari setiap item permintaan untuk ditulis
Batas DynamoDB berlakuTransactWriteItems.
Ob TransactWriteItems jek permintaan memiliki struktur sebagai berikut:
type DynamoDBTransactWriteItemsRequest = { operation: 'TransactWriteItems'; transactItems: TransactItem[]; }; type TransactItem = | TransactWritePutItem | TransactWriteUpdateItem | TransactWriteDeleteItem | TransactWriteConditionCheckItem; type TransactWritePutItem = { table: string; operation: 'PutItem'; key: { [key: string]: any }; attributeValues: { [key: string]: string}; condition?: TransactConditionCheckExpression; }; type TransactWriteUpdateItem = { table: string; operation: 'UpdateItem'; key: { [key: string]: any }; update: DynamoDBExpression; condition?: TransactConditionCheckExpression; }; type TransactWriteDeleteItem = { table: string; operation: 'DeleteItem'; key: { [key: string]: any }; condition?: TransactConditionCheckExpression; }; type TransactWriteConditionCheckItem = { table: string; operation: 'ConditionCheck'; key: { [key: string]: any }; condition?: TransactConditionCheckExpression; }; type TransactConditionCheckExpression = { expression: string; expressionNames?: { [key: string]: string}; expressionValues?: { [key: string]: any}; returnValuesOnConditionCheckFailure: boolean; };
TransactWriteItems bidang
- Bidang didefinisikan sebagai berikut:
-
-
operation -
Operasi DynamoDB untuk melakukan. Untuk melakukan operasi
TransactWriteItemsDynamoDB, ini harus disetel ke.TransactWriteItemsNilai ini diperlukan. -
transactItems -
Item permintaan untuk disertakan. Nilai adalah array item permintaan. Setidaknya satu item permintaan harus disediakan.
transactItemsNilai ini diperlukan.Untuk
PutItem, bidang didefinisikan sebagai berikut:-
table -
Tabel DynamoDB tujuan. Nilai adalah string dari nama tabel.
tableNilai ini diperlukan. -
operation -
Operasi DynamoDB untuk melakukan. Untuk melakukan operasi
PutItemDynamoDB, ini harus disetel ke.PutItemNilai ini diperlukan. -
key -
Kunci DynamoDB mewakili kunci utama item yang akan dimasukkan. Item DynamoDB mungkin memiliki kunci hash tunggal, atau kunci hash dan kunci pengurutan, tergantung pada struktur tabel. Untuk informasi selengkapnya tentang cara menentukan “nilai yang diketik”, lihat Sistem tipe (pemetaan permintaan). Nilai ini diperlukan.
-
attributeValues -
Sisa atribut item yang akan dimasukkan ke dalam DynamoDB. Untuk informasi selengkapnya tentang cara menentukan “nilai yang diketik”, lihat Sistem tipe (pemetaan permintaan). Ini adalah bidang opsional.
-
condition -
Kondisi untuk menentukan apakah permintaan harus berhasil atau tidak, berdasarkan status objek yang sudah ada di DynamoDB. Jika tidak ada kondisi yang ditentukan,
PutItempermintaan akan mengganti entri yang ada untuk item tersebut. Anda dapat menentukan apakah akan mengambil kembali item yang ada ketika pemeriksaan kondisi gagal. Untuk informasi selengkapnya tentang kondisi transaksional, lihat Ekspresi kondisi transaksi. Nilai ini bersifat opsional.
Untuk
UpdateItem, bidang didefinisikan sebagai berikut:-
table -
Tabel DynamoDB untuk diperbarui. Nilai adalah string dari nama tabel.
tableNilai ini diperlukan. -
operation -
Operasi DynamoDB untuk melakukan. Untuk melakukan operasi
UpdateItemDynamoDB, ini harus disetel ke.UpdateItemNilai ini diperlukan. -
key -
Kunci DynamoDB mewakili kunci utama item yang akan diperbarui. Item DynamoDB mungkin memiliki kunci hash tunggal, atau kunci hash dan kunci pengurutan, tergantung pada struktur tabel. Untuk informasi selengkapnya tentang cara menentukan “nilai yang diketik”, lihat Sistem tipe (pemetaan permintaan). Nilai ini diperlukan.
-
update -
updateBagian ini memungkinkan Anda menentukan ekspresi pembaruan yang menjelaskan cara memperbarui item di DynamoDB. Untuk informasi selengkapnya tentang cara menulis ekspresi pembaruan, lihat dokumentasi DynamoDB UpdateExpressions . Bagian ini diperlukan. -
condition -
Kondisi untuk menentukan apakah permintaan harus berhasil atau tidak, berdasarkan status objek yang sudah ada di DynamoDB. Jika tidak ada kondisi yang ditentukan,
UpdateItempermintaan memperbarui entri yang ada terlepas dari statusnya saat ini. Anda dapat menentukan apakah akan mengambil kembali item yang ada ketika pemeriksaan kondisi gagal. Untuk informasi selengkapnya tentang kondisi transaksional, lihat Ekspresi kondisi transaksi. Nilai ini bersifat opsional.
Untuk
DeleteItem, bidang didefinisikan sebagai berikut:-
table -
Tabel DynamoDB untuk menghapus item. Nilai adalah string dari nama tabel.
tableNilai ini diperlukan. -
operation -
Operasi DynamoDB untuk melakukan. Untuk melakukan operasi
DeleteItemDynamoDB, ini harus disetel ke.DeleteItemNilai ini diperlukan. -
key -
Kunci DynamoDB mewakili kunci utama item yang akan dihapus. Item DynamoDB mungkin memiliki kunci hash tunggal, atau kunci hash dan kunci pengurutan, tergantung pada struktur tabel. Untuk informasi selengkapnya tentang cara menentukan “nilai yang diketik”, lihat Sistem tipe (pemetaan permintaan). Nilai ini diperlukan.
-
condition -
Kondisi untuk menentukan apakah permintaan harus berhasil atau tidak, berdasarkan status objek yang sudah ada di DynamoDB. Jika tidak ada kondisi yang ditentukan,
DeleteItempermintaan akan menghapus item terlepas dari statusnya saat ini. Anda dapat menentukan apakah akan mengambil kembali item yang ada ketika pemeriksaan kondisi gagal. Untuk informasi selengkapnya tentang kondisi transaksional, lihat Ekspresi kondisi transaksi. Nilai ini bersifat opsional.
Untuk
ConditionCheck, bidang didefinisikan sebagai berikut:-
table -
Tabel DynamoDB untuk memeriksa kondisi. Nilai adalah string dari nama tabel.
tableNilai ini diperlukan. -
operation -
Operasi DynamoDB untuk melakukan. Untuk melakukan operasi
ConditionCheckDynamoDB, ini harus disetel ke.ConditionCheckNilai ini diperlukan. -
key -
Kunci DynamoDB mewakili kunci utama item untuk pemeriksaan kondisi. Item DynamoDB mungkin memiliki kunci hash tunggal, atau kunci hash dan kunci pengurutan, tergantung pada struktur tabel. Untuk informasi selengkapnya tentang cara menentukan “nilai yang diketik”, lihat Sistem tipe (pemetaan permintaan). Nilai ini diperlukan.
-
condition -
Kondisi untuk menentukan apakah permintaan harus berhasil atau tidak, berdasarkan status objek yang sudah ada di DynamoDB. Anda dapat menentukan apakah akan mengambil kembali item yang ada ketika pemeriksaan kondisi gagal. Untuk informasi selengkapnya tentang kondisi transaksional, lihat Ekspresi kondisi transaksi. Nilai ini diperlukan.
-
-
Hal-hal yang perlu diingat:
-
Hanya kunci item permintaan yang dikembalikan dalam tanggapan, jika berhasil. Urutan kunci akan sama dengan urutan item permintaan.
-
Transaksi dilakukan dengan cara semua atau tidak sama sekali. Jika ada item permintaan yang menyebabkan kesalahan, seluruh transaksi tidak akan dilakukan dan detail kesalahan akan dikembalikan.
-
Tidak ada dua item permintaan yang dapat menargetkan item yang sama. Jika tidak, mereka akan menyebabkan TransactionCanceledException kesalahan.
-
Jika kesalahan transaksi adalah TransactionCanceledException,
cancellationReasonsblok akan diisi. Jika pemeriksaan kondisi item permintaan gagal dan Anda tidakreturnValuesOnConditionCheckFailuremenentukanfalse, item yang ada dalam tabel akan diambil dan disimpanitemdi posisicancellationReasonsblok yang sesuai. -
TransactWriteItemsterbatas pada 100 item permintaan. -
Operasi ini tidak didukung bila digunakan dengan deteksi konflik. Menggunakan keduanya secara bersamaan dapat mengakibatkan kesalahan.
Untuk contoh berikut handler permintaan fungsi:
import { util } from '@aws-appsync/utils'; export function request(ctx) { const { authorId, postId, title, description, oldTitle, authorName } = ctx.args; return { operation: 'TransactWriteItems', transactItems: [ { table: 'posts', operation: 'PutItem', key: util.dynamodb.toMapValues({ postId }), attributeValues: util.dynamodb.toMapValues({ title, description }), condition: util.transform.toDynamoDBConditionExpression({ title: { eq: oldTitle }, }), }, { table: 'authors', operation: 'UpdateItem', key: util.dynamodb.toMapValues({ authorId }), update: { expression: 'SET authorName = :name', expressionValues: util.dynamodb.toMapValues({ ':name': authorName }), }, }, ], }; }
Jika transaksi berhasil, hasil pemanggilan yang tersedia ctx.result adalah sebagai berikut:
{ "keys": [ // Key of the PutItem request { "post_id": "p1", }, // Key of the UpdateItem request { "author_id": "a1" } ], "cancellationReasons": null }
Jika transaksi gagal karena kegagalan pemeriksaan kondisi PutItem permintaan, hasil pemanggilan yang tersedia ctx.result adalah sebagai berikut:
{ "keys": null, "cancellationReasons": [ { "item": { "post_id": "p1", "post_title": "Actual old title", "post_description": "Old description" }, "type": "ConditionCheckFailed", "message": "The condition check failed." }, { "type": "None", "message": "None" } ] }
Ber ctx.error isi rincian tentang kesalahan. Tombol kunci dan CancellationReasons di jamin akan ada di. ctx.result