Graphql 访问冲突解决程序映射模板中请求的字段

Graphql 访问冲突解决程序映射模板中请求的字段,graphql,aws-appsync,Graphql,Aws Appsync,例如,当我们请求GraphQL查询时 query GetPost { singlePost(id: 123) { id title } } 我们在AWS AppSync(请求映射模板)中配置了Lambda解析器 { "version" : "2017-02-28", "operation" : "Invoke", "payload": { "resolve": "singlePost",

例如,当我们请求GraphQL查询时

query GetPost {
  singlePost(id: 123) {
    id
    title
  }
}
我们在AWS AppSync(请求映射模板)中配置了Lambda解析器

{
        "version" : "2017-02-28",
        "operation" : "Invoke",
        "payload": {
          "resolve": "singlePost",
          "query": $utils.toJson($context.arguments)
        }
}
允许我们定义传递给lambda处理程序的事件对象

对于上面的示例,我们的Lambda处理程序将通过事件
event
调用,其中
event.payload.query.id==123
或类似事件

根据
$context
对象的组成

{
   "arguments" : { ... },
   "source" : { ... },
   "result" : { ... },
   "identity" : { ... },
   "request" : { ... }
}
{code}

也就是说,文档没有提到我可以在哪里访问GraphQL查询的请求字段

对于前一个示例,这些字段将对应于
[“id”,“title”]

如果我需要通过昂贵的操作(例如SQL联接)解析对象的某些嵌套属性(例如标记数组),那么如果我可以检查是否确实请求了该嵌套属性,这将是有益的


然而,这个问题与GraphQL实现
GraphQL工具
vs-AppSync有关。不幸的是,这实际上不是AppSync今天支持的东西。然而,这是我们从其他客户那里听到的一个请求,我将把这篇文章作为+1来为将来的版本排定优先级。

文档已经更新,AWS在上下文中添加了一个新字段“info”,您可以访问字段名,如下所示:

{
    "version" : "2017-02-28",
    "operation" : "Invoke",
    "payload": {
      "resolve": "$ctx.info.fieldName",
      "query": $utils.toJson($context.arguments)
    }
}
您可以参考此处的文档:


此功能是否有更新?这将大大减少应用程序中映射模板的膨胀。。尚未看到有关此功能的任何正在进行的对话。
info.fieldName
是要求此解析程序解析的父项上的字段,而不是原始问题要求的最后一个对象上的字段名数组。