本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS AppSync 可讓您使用 VTL或 為解析器和函數編寫業務邏輯 JavaScript。使用兩種語言時,您會撰寫邏輯,指示 AWS AppSync 服務如何與資料來源互動。使用 VTL時,您會撰寫必須評估為有效 JSON編碼字串的映射範本。使用 JavaScript,您可以寫入傳回物件的請求和回應處理常式。您不會傳回 JSON編碼的字串。
例如,使用下列VTL映射範本來取得 Amazon DynamoDB 項目:
{
"operation": "GetItem",
"key": {
"id": $util.dynamodb.toDynamoDBJson($ctx.args.id),
}
}
公用程式會$util.dynamodb.toDynamoDBJson
傳回 JSON編碼字串。如果 $ctx.args.id
設定為 <id>
,範本會評估為有效的 JSON編碼字串:
{
"operation": "GetItem",
"key": {
"id": {"S": "<id>"},
}
}
使用 時 JavaScript,您不需要在程式碼中列印原始JSON編碼字串,而且toDynamoDBJson
不需要像 一樣使用公用程式。上述映射範本的同等範例為:
import { util } from '@aws-appsync/utils';
export function request(ctx) {
return {
operation: 'GetItem',
key: {id: util.dynamodb.toDynamoDB(ctx.args.id)}
};
}
另一種方法是使用 util.dynamodb.toMapValues
,這是處理值物件的建議方法:
import { util } from '@aws-appsync/utils';
export function request(ctx) {
return {
operation: 'GetItem',
key: util.dynamodb.toMapValues({ id: ctx.args.id }),
};
}
這評估為:
{
"operation": "GetItem",
"key": {
"id": {
"S": "<id>"
}
}
}
注意
我們建議搭配 DynamoDB 資料來源使用 DynamoDB 模組:
import * as ddb from '@aws-appsync/utils/dynamodb'
export function request(ctx) {
ddb.get({ key: { id: ctx.args.id } })
}
另一個範例是,採取下列映射範本將項目放入 Amazon DynamoDB 資料來源:
{
"operation" : "PutItem",
"key" : {
"id": $util.dynamodb.toDynamoDBJson($util.autoId()),
},
"attributeValues" : $util.dynamodb.toMapValuesJson($ctx.args)
}
評估時,此映射範本字串必須產生有效的 JSON編碼字串。使用 時 JavaScript,您的程式碼會直接傳回請求物件:
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),
};
}
評估為:
{
"operation": "PutItem",
"key": {
"id": { "S": "2bff3f05-ff8c-4ed8-92b4-767e29fc4e63" }
},
"attributeValues": {
"firstname": { "S": "Shaggy" },
"age": { "N": 4 }
}
}
注意
我們建議搭配 DynamoDB 資料來源使用 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 })
}