Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS AppSync memungkinkan Anda untuk menulis logika bisnis Anda untuk resolver dan fungsi Anda menggunakan VTL atau. JavaScript Dengan kedua bahasa, Anda menulis logika yang menginstruksikan AWS AppSync layanan tentang cara berinteraksi dengan sumber data Anda. DenganVTL, Anda menulis template pemetaan yang harus mengevaluasi ke string JSON -encoded yang valid. Dengan JavaScript, Anda menulis penangan permintaan dan respons yang mengembalikan objek. Anda tidak mengembalikan string JSON -encoded.
Misalnya, ambil template VTL pemetaan berikut untuk mendapatkan item Amazon DynamoDB:
{
"operation": "GetItem",
"key": {
"id": $util.dynamodb.toDynamoDBJson($ctx.args.id),
}
}
Utilitas $util.dynamodb.toDynamoDBJson
mengembalikan string JSON -encoded. Jika $ctx.args.id
disetel ke<id>
, template mengevaluasi ke string JSON -encoded yang valid:
{
"operation": "GetItem",
"key": {
"id": {"S": "<id>"},
}
}
Saat bekerja dengan JavaScript, Anda tidak perlu mencetak string mentah JSON -encoded dalam kode Anda, dan menggunakan utilitas seperti toDynamoDBJson
tidak diperlukan. Contoh yang setara dari template pemetaan di atas adalah:
import { util } from '@aws-appsync/utils';
export function request(ctx) {
return {
operation: 'GetItem',
key: {id: util.dynamodb.toDynamoDB(ctx.args.id)}
};
}
Alternatifnya adalah menggunakanutil.dynamodb.toMapValues
, yang merupakan pendekatan yang direkomendasikan untuk menangani objek nilai:
import { util } from '@aws-appsync/utils';
export function request(ctx) {
return {
operation: 'GetItem',
key: util.dynamodb.toMapValues({ id: ctx.args.id }),
};
}
Ini mengevaluasi untuk:
{
"operation": "GetItem",
"key": {
"id": {
"S": "<id>"
}
}
}
catatan
Sebaiknya gunakan modul DynamoDB dengan sumber data DynamoDB:
import * as ddb from '@aws-appsync/utils/dynamodb'
export function request(ctx) {
ddb.get({ key: { id: ctx.args.id } })
}
Sebagai contoh lain, ambil template pemetaan berikut untuk menempatkan item di sumber data Amazon DynamoDB:
{
"operation" : "PutItem",
"key" : {
"id": $util.dynamodb.toDynamoDBJson($util.autoId()),
},
"attributeValues" : $util.dynamodb.toMapValuesJson($ctx.args)
}
Saat dievaluasi, string template pemetaan ini harus menghasilkan string JSON -encoded yang valid. Saat menggunakan JavaScript, kode Anda mengembalikan objek permintaan secara langsung:
import { util } from '@aws-appsync/utils';
export function request(ctx) {
const { id = util.autoId(), ...values } = ctx.args;
return {
operation: 'PutItem',
key: util.dynamodb.toMapValues({ id }),
attributeValues: util.dynamodb.toMapValues(values),
};
}
yang mengevaluasi untuk:
{
"operation": "PutItem",
"key": {
"id": { "S": "2bff3f05-ff8c-4ed8-92b4-767e29fc4e63" }
},
"attributeValues": {
"firstname": { "S": "Shaggy" },
"age": { "N": 4 }
}
}
catatan
Sebaiknya gunakan modul DynamoDB dengan sumber data DynamoDB:
import { util } from '@aws-appsync/utils'
import * as ddb from '@aws-appsync/utils/dynamodb'
export function request(ctx) {
const { id = util.autoId(), ...item } = ctx.args
return ddb.put({ key: { id }, item })
}