View a markdown version of this page

Migrando de VTL a in JavaScript AWS AppSync - AWS AppSync GraphQL

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Migrando de VTL a in JavaScript AWS AppSync

AWS AppSync le permite escribir la lógica empresarial para sus resoluciones y funciones mediante VTL o. JavaScript Con ambos lenguajes, usted escribe una lógica que indica al AWS AppSync servicio cómo interactuar con sus fuentes de datos. Con VTL, se escriben plantillas de mapeo que deben dar como resultado una cadena válida JSON-encoded. Con JavaScript, se escriben controladores de solicitudes y respuestas que devuelven objetos. No devuelves una JSON-encoded cadena.

Por ejemplo, tome la siguiente plantilla de mapeo VTL para obtener un elemento de Amazon DynamoDB:

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

La utilidad $util.dynamodb.toDynamoDBJson devuelve una JSON-encoded cadena. Si $ctx.args.id se establece en<id>, la plantilla se evalúa como una JSON-encoded cadena válida:

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

Al trabajar con JavaScript ella, no es necesario imprimir JSON-encoded cadenas sin procesar dentro del código y no toDynamoDBJson es necesario utilizar una utilidad como esta. Un ejemplo equivalente de la plantilla de mapeo anterior es:

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

Una alternativa es utilizar util.dynamodb.toMapValues, que es el enfoque recomendado para gestionar un objeto de valores:

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

Esto se evalúa como:

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

Recomendamos utilizar el módulo de DynamoDB con orígenes de datos de DynamoDB:

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

Como otro ejemplo, tome la siguiente plantilla de mapeo para colocar un elemento en un origen de datos de Amazon DynamoDB:

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

Cuando se evalúa, esta cadena de plantilla de mapeo debe producir una JSON-encoded cadena válida. Cuando se usa JavaScript, el código devuelve el objeto de solicitud directamente:

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

que se evalúa como:

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

Recomendamos utilizar el módulo de DynamoDB con orígenes de datos de 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 }) }