У меня есть API-интерфейс AppSync GraphQL, который делает запрос к DynamoDB и возвращает строку JSON, однако в своем шаблоне отображения ответов я использую встроенную функцию $util.parseJson()
, как указано здесь - но яЯ все еще возвращаю строку JSON в окне запросов и при запросе данных в моем приложении React.
Файл схемы , у меня есть обычное поле ID & Address, которое имеет тип AWSJSON.
type Venue {
id: ID!
address: AWSJSON
}
При выполнении мутации я обычно запускаю объект адреса с помощью быстрого JSON.stringify(addressObj)
, и он форматирует объект как строку с экранированным символом \ "\", что означает, что он может быть вставлен в DynamoDB.
Шаблон сопоставления запросов
{
"version": "2017-02-28",
"operation": "GetItem",
"key": {
"id": $util.dynamodb.toDynamoDBJson($ctx.args.id),
}
}
Шаблон сопоставления ответов
#set($result = $ctx.result)
## address - parse back to JSON
#set($result.address = $util.parseJson($ctx.result.address))
## Return the result
$util.toJson($result)
Идея создания новой переменнойи затем присвоить значение значению parseJSON
было взято из Как вернуть объект JSON из DynamoDB с appsync? .Итак, как показано ниже, я анализирую значение с помощью того, что кажется правильным методом, чтобы превратить его из строкового JSON в объект - но, похоже, он не работает.
Текущий ответ:
{
"data": {
"getVenue": {
"id": "31538150",
"address": "{\"lng\":-1.54511300000001,\"postcode\":\"LS1 5DL\",\"short\":\"New Station St., LS1\",\"lat\":53.795231,\"full\":\"16 New Station St, Leeds LS1 5DL, UK\"}"
}
}
}
Принимая во внимание, что я хочу получить ответ ...
{
"data": {
"getVenue": {
"id": "31538150",
"address": { "lng": -1.54511300000001, "postcode": "LS1 5DL", "short": "New Station St., LS1", "lat": 53.795231, "full": "16 New Station St, Leeds LS1 5DL, UK" }
}
}
}
Любая помощь очень ценится!