【发布时间】:2020-01-21 16:08:15
【问题描述】:
我将 Amazon RDS 与 AppSync 结合使用。我创建了一个解析器,它连接两个表以获得它们之间的一对一关联并从两个表中返回列。我想做的是能够将一些列嵌套在使用 $util.rds.toJSONObject() 评估的结果解析 JSON 对象中的一个键下。
这是架构:
type Parent {
col1: String
col2: String
child: Child
}
type Child {
col3: String
col4: String
}
这是解析器:
{
"version": "2018-05-29",
"statements": [
"SELECT parent.*, child.col3 AS `child.col3`, child.col4 AS `child.col4` FROM parent LEFT JOIN child ON parent.col1 = child.col3"
]
}
我尝试使用点语法命名结果列,但 $util.rds.toJSONObject() 没有将 col3 和 col4 放在 child 键下。之所以应该这样做是因为否则,Apollo 将无法缓存和解析实体。
注意:点语法没有记录在任何地方。通常,一些 ORM 使用点语法技术将 SQL 行转换为适当的嵌套 JSON 对象。
【问题讨论】:
-
$util.rds.toJsonObject()将 RDS sql 结果转换为更友好的格式 - JSON 对象。它不是一个成熟的 ORM。您需要自己编写此自定义逻辑。您可以将$util.rds.toJSONObject()的输出作为具有字符串键和对象值的映射列表进行操作。此外,附加到该解析器的预期输出类型是什么? (是父母名单吗?) -
我求助于使用
sequelize来查询和返回数据的 AWS Lambda 解析器。效果很好。我可以轻松地查询 JSON 中的关系。
标签: amazon-web-services aws-appsync amazon-aurora