View a markdown version of this page

Migrazione da VTL a in JavaScript AWS AppSync - AWS AppSync GraphQL

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Migrazione da VTL a in JavaScript AWS AppSync

AWS AppSync consente di scrivere la logica aziendale per i resolver e le funzioni utilizzando VTL o. JavaScript Con entrambi i linguaggi, scrivi una logica che istruisce il AWS AppSync servizio su come interagire con le tue fonti di dati. Con VTL, si scrivono modelli di mappatura che devono restituire una stringa valida. JSON-encoded Con JavaScript, si scrivono gestori di richieste e risposte che restituiscono oggetti. Non si restituisce una JSON-encoded stringa.

Ad esempio, utilizza il seguente modello di mappatura VTL per ottenere un articolo Amazon DynamoDB:

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

L'utilità restituisce una stringa$util.dynamodb.toDynamoDBJson. JSON-encoded Se $ctx.args.id è impostato su<id>, il modello restituisce una JSON-encoded stringa valida:

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

Quando si lavora con JavaScript, non è necessario stampare JSON-encoded stringhe non elaborate all'interno del codice e non toDynamoDBJson è necessario utilizzare un'utilità come questa. Un esempio equivalente del modello di mappatura riportato sopra è:

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

Un'alternativa è usareutil.dynamodb.toMapValues, che è l'approccio consigliato per gestire un oggetto di valori:

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

Ciò equivale a:

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

Consigliamo di utilizzare il modulo DynamoDB con le origini dati DynamoDB:

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

Come altro esempio, utilizza il seguente modello di mappatura per inserire un elemento in un'origine dati Amazon DynamoDB:

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

Una volta valutata, questa stringa del modello di mappatura deve produrre una stringa valida. JSON-encoded Quando si utilizza JavaScript, il codice restituisce direttamente l'oggetto della richiesta:

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

che restituisce:

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

Consigliamo di utilizzare il modulo DynamoDB con le fonti di dati 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 }) }