繁体   English   中英

Appsync RDS SQL 不返回 JSON 格式

[英]Appsync RDS SQL not returning JSON format

我正在尝试获取 SQL 查询以使用 appsync 和 RDS 作为数据源将其数据返回为 JSON。 在 appsync 中我传递了这样的东西:

"statements":  [ "Select * from user WHERE uuid = '001'"]

我有作为响应映射 $ctx.result 但我得到的是回复

{sqlStatementResults=[{records=[[{stringValue=001}, {stringValue=nonemail@none.no}, {stringValue=Nully}, {longValue=62761} ... }

我期待以与亚马逊https://docs.aws.amazon.com/appsync/latest/devguide/rds-helpers-in-util-rds.html的 rds helpers 文档中描述的方式相同的方式获取值可以看到从SQLStatement返回的记录格式为JSON

                    {
                        "stringValue": "Mark Twain"
                    },
                    {
                        "stringValue": "Adventures of Huckleberry Finn"
                    }

是的,AppSync VTL 解析器分为两部分,请求映射模板和响应映射模板。

我们执行请求映射模板部分后,它的结果被存储到上下文 object 中, $ctx ,作为$ctx.result ,所以这个结果键有上一步的结果,即请求映射模板执行。

好吧,看起来您已经正确设置了请求映射模板,您在其中通过使用"statements"类型的键执行 SQL 条语句,这些语句将针对您附加的数据源执行,在这种情况下,即 RDS。

这是一点,在执行请求映射模板时,从 RDS 返回的 SQL 语句执行结果(使用 AppSync 时使用数据 API 调用)实际上是这些简单的结果:

{sqlStatementResults=[{records=[[{stringValue=001}, {stringValue=nonemail@none.no}, {stringValue=Nully}, {longValue=62761} ... },

因此,与您预期的不同,此$ctx.result需要解析回根据 RDS 数据库架构配置的正确键/值对。

所以你只需要有响应映射模板,解析请求映射模板执行的结果,而不是只返回$ctx.result ,你会这样做:

$util.rds.toJsonObject($ctx.result)[0]

这将返回您的数据,使用正确的密钥在 JSON 中正确格式化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM