View a markdown version of this page

Migrasi dari VTL ke in JavaScript AWS AppSync - AWS AppSync GraphQL

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

Migrasi dari VTL ke in JavaScript AWS AppSync

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. Dengan VTL, Anda menulis template pemetaan yang harus dievaluasi ke JSON-encoded string yang valid. Dengan JavaScript, Anda menulis permintaan dan penanganan respons yang mengembalikan objek. Anda tidak mengembalikan JSON-encoded string.

Misalnya, ambil template pemetaan VTL berikut untuk mendapatkan item Amazon DynamoDB:

{ "operation": "GetItem", "key": { "id": $util.dynamodb.toDynamoDBJson($ctx.args.id), } }

Utilitas $util.dynamodb.toDynamoDBJson mengembalikan JSON-encoded string. Jika $ctx.args.id disetel ke<id>, template mengevaluasi ke JSON-encoded string yang valid:

{ "operation": "GetItem", "key": { "id": {"S": "<id>"}, } }

Saat bekerja dengan JavaScript, Anda tidak perlu mencetak JSON-encoded string mentah dalam kode Anda, dan menggunakan utilitas seperti tidak toDynamoDBJson diperlukan. Contoh 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 meletakkan item di sumber data Amazon DynamoDB:

{ "operation" : "PutItem", "key" : { "id": $util.dynamodb.toDynamoDBJson($util.autoId()), }, "attributeValues" : $util.dynamodb.toMapValuesJson($ctx.args) }

Ketika dievaluasi, string template pemetaan ini harus menghasilkan JSON-encoded string 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 }) }