Ошибка сопоставления запроса на обновление AppSync to DynamoDB - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть следующий шаблон сопоставления DynamoDB, чтобы обновить существующий элемент DynamoDB:

{
  "version" : "2017-02-28",
  "operation" : "UpdateItem",
  "key" : {
    "id": $util.dynamodb.toDynamoDBJson($ctx.args.application.id),
    "tenant": $util.dynamodb.toDynamoDBJson($ctx.identity.claims['http://domain/tenant'])
  },
  "update" : {
    "expression" : "SET #sourceUrl = :sourceUrl, #sourceCredential = :sourceCredential, #instanceSize = :instanceSize, #users = :users",
    "expressionNames" : {
        "#sourceUrl" : "sourceUrl",
        "#sourceCredential" : "sourceCredential",
        "#instanceSize" : "instanceSize",
        "#users" : "users"
    },
    "expressionValues" : {
        ":sourceUrl" : $util.dynamodb.toDynamoDbJson($ctx.args.application.sourceUrl),
        ":sourceCredential" : $util.dynamodb.toDynamoDbJson($ctx.args.application.sourceCredential),
        ":instanceSize" : $util.dynamodb.toDynamoDbJson($ctx.args.application.instanceSize),
        ":users" : $util.dynamodb.toDynamoDbJson($ctx.args.application.users)
    }
  },
  "condition" : {
    "expression" : "attribute_exists(#id) AND attribute_exists(#tenant)",
    "expressionNames" : {
      "#id" : "id",
      "#tenant" : "tenant"
    }
  }
}

Но я получаю следующую ошибку:

message: "Unable to parse the JSON document: 'Unrecognized token '$util': was expecting ('true', 'false' or 'null')↵ at [Source: (String)"{↵  "version" : "2017-02-28",↵  "operation" : "UpdateItem",↵  "key" : {↵    "id": {"S":"abc-123"},↵    "tenant": {"S":"test"}↵  },↵  "update" : {↵    "expression" : "SET #sourceUrl = :sourceUrl, #sourceCredential = :sourceCredential, #instanceSize = :instanceSize, #users = :users",↵    "expressionNames" : {↵        "#sourceUrl" : "sourceUrl",↵        "#sourceCredential" : "sourceCredential",↵        "#instanceSize" : "instanceSize",↵        "#users" : "users"↵    }"[truncated 400 chars]; line: 17, column: 29]'"

Я пытался удалитьчасти, и это, кажется, связано с expressionValues, но я не вижу ничего плохого в синтаксисе.

1 Ответ

0 голосов
/ 01 декабря 2018

Похоже, вы неправильно написали toDynamoDBJson метод

Замените

$util.dynamodb.toDynamoDbJson($ctx.args.application.sourceUrl)

на

$util.dynamodb.toDynamoDBJson($ctx.args.application.sourceUrl)

Обратите внимание на верхний регистр B in toDynamoDBJson.

...