Amazon web services 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

我正在尝试为AppSync编写一个解析器,该解析器根据DynamoDB中记录的存在为布尔字段派生值

我目前拥有以下请求映射模板:

{
    "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。