我有一个 AppSync GraphQL API,可以对 DynamoDB 进行查询并返回 JSON 字符串,但是在我的响应映射模板中,我使用内置$util.parseJson()
功能如所列here https://docs.aws.amazon.com/appsync/latest/devguide/resolver-util-reference.html- 但当我在 React 应用程序中请求数据时,我仍然在查询窗口中返回一个 JSON 字符串。
架构文件,我有一个 AWSJSON 类型的普通 ID 和地址字段。
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
值取自如何使用 appsync 从 DynamoDB 返回 JSON 对象? https://stackoverflow.com/questions/51483182/how-return-json-object-from-dynamodb-with-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" }
}
}
}
任何帮助是极大的赞赏!