View a markdown version of this page

Migration von VTL zu IN JavaScript AWS AppSync - AWS AppSync GraphQL

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Migration von VTL zu IN JavaScript AWS AppSync

AWS AppSync ermöglicht es Ihnen, Ihre Geschäftslogik für Ihre Resolver und Funktionen mit VTL oder zu schreiben. JavaScript Bei beiden Sprachen schreiben Sie eine Logik, die den AWS AppSync Service anweist, wie er mit Ihren Datenquellen interagieren soll. Mit VTL schreiben Sie Mapping-Vorlagen, die zu einer gültigen JSON-encoded Zeichenfolge ausgewertet werden müssen. Mit JavaScript schreiben Sie Anforderungs- und Antworthandler, die Objekte zurückgeben. Sie geben keine JSON-encoded Zeichenfolge zurück.

Verwenden Sie zum Beispiel die folgende VTL-Zuordnungsvorlage, um ein Amazon DynamoDB-Element abzurufen:

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

Das Hilfsprogramm $util.dynamodb.toDynamoDBJson gibt eine Zeichenfolge zurück. JSON-encoded Wenn auf gesetzt $ctx.args.id ist<id>, ergibt die Vorlage eine gültige JSON-encoded Zeichenfolge:

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

Wenn Sie mit arbeiten JavaScript, müssen Sie keine unformatierten JSON-encoded Zeichenketten in Ihrem Code ausdrucken, und die Verwendung eines Dienstprogramms wie toDynamoDBJson ist nicht erforderlich. Ein entsprechendes Beispiel für die obige Mapping-Vorlage ist:

import { util } from '@aws-appsync/utils'; export function request(ctx) { return { operation: 'GetItem', key: {id: util.dynamodb.toDynamoDB(ctx.args.id)} }; }

Eine Alternative besteht darinutil.dynamodb.toMapValues, den empfohlenen Ansatz für die Behandlung eines Werteobjekts zu verwenden:

import { util } from '@aws-appsync/utils'; export function request(ctx) { return { operation: 'GetItem', key: util.dynamodb.toMapValues({ id: ctx.args.id }), }; }

Das ergibt:

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

Wir empfehlen, das DynamoDB-Modul mit DynamoDB-Datenquellen zu verwenden:

import * as ddb from '@aws-appsync/utils/dynamodb' export function request(ctx) { ddb.get({ key: { id: ctx.args.id } }) }

Nehmen Sie als weiteres Beispiel die folgende Zuordnungsvorlage, um ein Element in eine Amazon DynamoDB-Datenquelle einzufügen:

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

Bei der Auswertung muss diese Zeichenfolge der Zuordnungsvorlage eine gültige JSON-encoded Zeichenfolge ergeben. Bei Verwendung JavaScript gibt Ihr Code das Anforderungsobjekt direkt zurück:

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), }; }

was ergibt:

{ "operation": "PutItem", "key": { "id": { "S": "2bff3f05-ff8c-4ed8-92b4-767e29fc4e63" } }, "attributeValues": { "firstname": { "S": "Shaggy" }, "age": { "N": 4 } } }
Anmerkung

Wir empfehlen, das DynamoDB-Modul mit DynamoDB-Datenquellen zu verwenden:

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 }) }