Mih*_*aga 5 amazon-web-services aws-lambda graphql aws-appsync
我有以下查询:
query xxx {
getSomething(id: "id") {
field1
field2
}
}
Run Code Online (Sandbox Code Playgroud)
在lambda中,我有什么办法得到field1和得到field2吗?例如,仅查询mysql中的那些字段,而不是获取所有字段以供稍后AppSync丢弃。
我尝试将所有日志记录$context在请求映射器VTL文件中,但它们不存在。有任何想法吗?无法做到这一点似乎很愚蠢。我在lambda中唯一遇到的就是id参数。
谢谢Mihai
AppSync 现在支持获取GraphQL 信息对象。您可以从selectionSetList变量中获取请求列的列表。
Info 对象的布局:
{
"fieldName": "string",
"parentTypeName": "string",
"variables": { ... },
"selectionSetList": ["string"],
"selectionSetGraphQL": "string"
}
Run Code Online (Sandbox Code Playgroud)
将 selectionSetList 属性传递给 lambda 解析器的示例:
{
"version" : "2017-02-28",
"operation": "Invoke",
"payload": {
"arguments": $utils.toJson($ctx.args),
"selectionSetList": $utils.toJson($ctx.info.selectionSetList),
"selectionSetGraphQL": $utils.toJson($ctx.info.selectionSetGraphQL)
}
}
Run Code Online (Sandbox Code Playgroud)
注意:如果您尝试传递 selectionSetList,则需要专门引用它(如上例所示)。如果 info 对象直接通过类似$utils.toJson($ctx.info).
这可能不是您想听到的答案,但正如您所发现的那样,AppSync 根本无法使 graphql(字段或其他)可供您使用。
我可以给你的唯一两个“选择”是:
getThingFromTableA,而getThingFromTableB不仅仅是getThing){ cheapA, cheapB, expensiveA { expensiveTableAThingA, expensiveTableAThingB }, expensiveB }),则使用嵌套对象。注意,这并不罕见,例如Apollo 默认情况下也不会。
| 归档时间: |
|
| 查看次数: |
569 次 |
| 最近记录: |