Вложенный запрос с помощью appsync resolver, aws dymaodb - PullRequest
1 голос
/ 06 мая 2019

Мне нужно выполнить запрос, используя aws appsync resolver на DynamodB, основываясь на результате первого запроса. У меня ниже таблица пользователей. userTable

Первый запрос: найдите элемент, где userId = u1 и type = user. Второй запрос: найдите элемент, в котором userId = «RefId, возвращенный из первого запроса» и status = complete.

Мне нужно сделать это одним запросом в appsync resolver.


#set( $expValues = {} )
#set($expression="userId = :userId ")
$!{expValues.put(":userId ", { "S" : $ctx.args.input.userId })}


#if(! $util.isNullOrEmpty($ctx.args.input.type))
  #set($expression="$expression and begins_with(type)")
  $!{expValues.put(":type", { "S" : $type})}
#end

{
    "version" : "2018-05-29",
    "operation" : "Query",
    "index" : "mId_mType_index",
    "scanIndexForward" : false,
     "query" : {
        "expression":"$expression",

        #if( !${expValues.isEmpty()} )
            "expressionValues" : $utils.toJson($expValues)
        #end
    },
    #if( ${ctx.args.limit} )
        "limit": ${ctx.args.limit}
    #end
    #if( ${ctx.args.nextToken} )
        ,"nextToken": "${ctx.args.nextToken}"
    #end

}

1 Ответ

2 голосов
/ 06 мая 2019

Это можно сделать с помощью конвейерного решения в AWS AppSync.Преобразователь конвейера может иметь несколько функций распознавателя, которые могут иметь свои собственные источники данных.Следующая функция в конвейере может использовать результат предыдущего преобразователя.

Мне нужно сделать это одним запросом в appsync resolver.

Я не знаюзачем вам (думаю) это нужно, а это невозможно.

...