AppSync + DynamoDB: фильтр по владельцу - PullRequest
1 голос
/ 11 июня 2019

Я пытаюсь написать шаблон распознавателя для сканирования, который фильтрует по владельцу.

Вот что я попробовал (это мой шаблон запроса):

#set( $identityValue = $util.defaultIfNull($ctx.identity.claims.get("username"),
$util.defaultIfNull($ctx.identity.claims.get("cognito:username"), "___xamznone____")) )
#set( $ScanRequest = {
"version": "2017-02-28",
  "operation": "Scan",
  "filter": {
    "expression": "owner = :owner",
    "expressionValues": {
      ":owner": { "S": $identityValue }
    }
  }
} )
$util.toJson($ScanRequest)

Этот шаблон не работает, потому что owner является зарезервированным ключевым словом. Однако я не могу понять, как обработать зарезервированные слова с помощью AppSync.

Как вы обрабатываете зарезервированные слова с AppSync? И есть ли лучший способ написать это сканирование, чем мое жестко закодированное?

1 Ответ

1 голос
/ 11 июня 2019

Итак, я решил это во время жесткого кодирования:

#set( $identityValue = $util.defaultIfNull($ctx.identity.claims.get("username"),
$util.defaultIfNull($ctx.identity.claims.get("cognito:username"), "___xamznone____")) )
#set( $ScanRequest = {
"version": "2017-02-28",
  "operation": "Scan",
  "filter": {
    "expression": "#owner = :owner",
    "expressionValues": {
      ":owner": { "S": $identityValue }
    },
    "expressionNames": {
      "#owner": "owner"
    }
  }
} )
$util.toJson($ScanRequest)

Если кто-то может придумать не жестко заданный ответ, например, например, динамически настраиваемый фильтр, например:

#if( $context.args.filter )
  #set( $ListRequest.filter = $util.parseJson("$util.transform.toDynamoDBFilterExpression($ctx.args.filter)") )
#end

Во время фильтрациивладельцем, я с радостью приму этот ответ.

...