首页 > 解决方案 > AWS AppSync Lambda 解析器字段

问题描述

我有以下查询:

query xxx {
   getSomething(id: "id") {
      field1
      field2
   }
}

有什么方法可以让我进入field1lambdafield2吗?例如,仅查询 mysql 中的那些字段,而不是全部获取,以便稍后被 AppSync 丢弃。

我尝试$context在请求映射器 VTL 文件中记录所有内容,但它们不存在。有任何想法吗?无法做到这一点似乎很愚蠢。我在 lambda 中得到的唯一东西就是id参数。

谢谢,米海

标签: amazon-web-servicesaws-lambdagraphqlaws-appsync

解决方案


AppSync 现在支持获取GraphQL Info 对象您可以从selectionSetList变量中获取请求列的列表。

Info 对象的布局:

{
    "fieldName": "string",
    "parentTypeName": "string",
    "variables": { ... },
    "selectionSetList": ["string"],
    "selectionSetGraphQL": "string"
}

将 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)
    }
}

注意:如果您尝试传递 selectionSetList,那么您需要专门引用它(如上面的示例中所示)。如果 info 对象直接使用$utils.toJson($ctx.info).


推荐阅读