Amazon dynamodb AWS AppSync-删除项不存在';t执行响应映射模板
尝试使用以下请求映射删除项目时:Amazon dynamodb AWS AppSync-删除项不存在';t执行响应映射模板,amazon-dynamodb,aws-appsync,vtl,Amazon Dynamodb,Aws Appsync,Vtl,尝试使用以下请求映射删除项目时: { "version" : "2017-02-28", "operation" : "DeleteItem", "key" : { "id": { "S" : "$ctx.args.id"}, "sortKey" : { "S" : "$ctx.args.sortKey"} } } 如果项目存在,它将通过响应模板处理结果,但是当项目不存在时,响应模板永远不会运行 响应模板: #set($ctx.result.status
{
"version" : "2017-02-28",
"operation" : "DeleteItem",
"key" : {
"id": { "S" : "$ctx.args.id"},
"sortKey" : { "S" : "$ctx.args.sortKey"}
}
}
如果项目存在,它将通过响应模板处理结果,但是当项目不存在时,响应模板永远不会运行
响应模板:
#set($ctx.result.status = "SUCCESS")
#set($ctx.result.message = "This was a success!")
$utils.toJson($ctx.result)
我知道,当一个项目在Dynamo中不存在时,它不会执行任何操作,但我希望它仍然会通过模板进行处理
当文档不存在时,AppSync是否缺少任何内容或无法通过响应映射处理DeleteItem请求?这是您正在使用的模板版本的预期执行行为(
2017-02-28
)
您可以将请求映射模板版本切换到2018-05-29
,将执行响应映射模板,并具有以下特征:
- 如果数据源调用结果为
,则执行响应映射模板null
- 如果数据源调用产生错误,现在由您来处理错误。调用错误可以使用
访问$ctx.error
- 响应映射模板评估结果将始终放置在GraphQL响应数据块中。您还可以分别使用
和$util.error()
引发或追加错误$util.appendError()
{
"version" : "2018-05-29", ## Note the new version
"operation" : "DeleteItem",
"key" : {
"id": { "S" : "$ctx.args.id"},
"sortKey" : { "S" : "$ctx.args.sortKey"}
}
}
和响应模板
#if ( $ctx.error )
$util.error($ctx.error.message, $ctx.error.type)
#end
#set($ctx.result.status = "SUCCESS")
#set($ctx.result.message = "This was a success!")
$utils.toJson($ctx.result)
这是您正在使用的模板版本的预期执行行为(
2017-02-28
)
您可以将请求映射模板版本切换到2018-05-29
,将执行响应映射模板,并具有以下特征:
- 如果数据源调用结果为
,则执行响应映射模板null
- 如果数据源调用产生错误,现在由您来处理错误。调用错误可以使用
访问$ctx.error
- 响应映射模板评估结果将始终放置在GraphQL响应数据块中。您还可以分别使用
和$util.error()
引发或追加错误$util.appendError()
{
"version" : "2018-05-29", ## Note the new version
"operation" : "DeleteItem",
"key" : {
"id": { "S" : "$ctx.args.id"},
"sortKey" : { "S" : "$ctx.args.sortKey"}
}
}
和响应模板
#if ( $ctx.error )
$util.error($ctx.error.message, $ctx.error.type)
#end
#set($ctx.result.status = "SUCCESS")
#set($ctx.result.message = "This was a success!")
$utils.toJson($ctx.result)