Amazon web services AppSync检查DynamoDB记录是否存在
我正在尝试为AppSync编写一个解析器,该解析器根据DynamoDB中记录的存在为布尔字段派生值 我目前拥有以下请求映射模板:Amazon web services AppSync检查DynamoDB记录是否存在,amazon-web-services,aws-appsync,Amazon Web Services,Aws Appsync,我正在尝试为AppSync编写一个解析器,该解析器根据DynamoDB中记录的存在为布尔字段派生值 我目前拥有以下请求映射模板: { "version": "2017-02-28", "operation": "GetItem", "key": { "field1": $util.dynamodb.toDynamoDBJson($ctx.args.field1), "field2": $util.dynamodb.toDynamoDBJso
{
"version": "2017-02-28",
"operation": "GetItem",
"key": {
"field1": $util.dynamodb.toDynamoDBJson($ctx.args.field1),
"field2": $util.dynamodb.toDynamoDBJson($ctx.args.field2)
}
}
#if($util.isNull($ctx.result))
#set($exists = false)
#else
#set($exists = true)
#end
$util.toJson({
"field1": $ctx.args.field1,
"field2": $ctx.args.field2,
"exists": $exists
})
以及以下响应映射模板:
{
"version": "2017-02-28",
"operation": "GetItem",
"key": {
"field1": $util.dynamodb.toDynamoDBJson($ctx.args.field1),
"field2": $util.dynamodb.toDynamoDBJson($ctx.args.field2)
}
}
#if($util.isNull($ctx.result))
#set($exists = false)
#else
#set($exists = true)
#end
$util.toJson({
"field1": $ctx.args.field1,
"field2": $ctx.args.field2,
"exists": $exists
})
如果记录存在,则此方法可以正常工作,但如果记录不存在,则AppSync只会为整个API调用返回null,并且似乎根本不会评估响应映射模板。我有没有办法指示它不要这样做
另一种选择是执行查询并查看响应的长度,但我不知道如何检查这些模板中的长度。这是2017版请求模板的预期行为。如果您希望评估$ctx.result,请切换到2018版本,如下所示:
{
"version": "2018-05-29",
"operation": "GetItem",
"key": {
"id": $util.dynamodb.toDynamoDBJson($ctx.args.id),
},
}
有关更多详细信息,请参阅此部分。这是2017版请求模板的预期行为。如果您希望评估$ctx.result,请切换到2018版本,如下所示:
{
"version": "2018-05-29",
"operation": "GetItem",
"key": {
"id": $util.dynamodb.toDynamoDBJson($ctx.args.id),
},
}
更多详细信息请参阅此部分。谢谢,我不知道这一点,因为他们所有的模板都使用2017。谢谢,我不知道这一点,因为他们所有的模板都使用2017。