访问解析器映射模板中的请求字段
Access requested fields in resolver mapping template
例如,当我们请求 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
或类似的。
根据 the docs $context
对象包括,
{
"arguments" : { ... },
"source" : { ... },
"result" : { ... },
"identity" : { ... },
"request" : { ... }
}
也就是说,文档没有提到我可以在哪里访问 GraphQL 查询的请求字段。
对于前一个示例,这些字段将对应于 ["id", "title"]
。
在我需要解析一些嵌套属性的情况下,例如一个对象的标签数组,通过昂贵的操作,例如SQL 加入,如果我可以检查是否实际请求了这个嵌套 属性,那将是有益的。
这个问题与 有关,但是,它不同于 GraphQL 实现 graphql-tools
和 AppSync。
不幸的是,这实际上不是 AppSync 今天支持的东西。然而,这是我们从其他客户那里听到的一个请求,我将使用此 post 作为 +1 来优先考虑它以用于将来的版本。
文档已更新,AWS在context中添加了一个新的字段info
,您可以按如下方式访问字段名称:
{
"version" : "2017-02-28",
"operation" : "Invoke",
"payload": {
"resolve": "$ctx.info.fieldName",
"query": $utils.toJson($context.arguments)
}
}
您可以参考这里的文档:
现在有一个 $context.info.selectionSetList
字段,其中包含请求的字段名称。 official docs 提供了一个示例并解释了一些关于接口和别名的特殊用例。
例如,当我们请求 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
或类似的。
根据 the docs $context
对象包括,
{
"arguments" : { ... },
"source" : { ... },
"result" : { ... },
"identity" : { ... },
"request" : { ... }
}
也就是说,文档没有提到我可以在哪里访问 GraphQL 查询的请求字段。
对于前一个示例,这些字段将对应于 ["id", "title"]
。
在我需要解析一些嵌套属性的情况下,例如一个对象的标签数组,通过昂贵的操作,例如SQL 加入,如果我可以检查是否实际请求了这个嵌套 属性,那将是有益的。
这个问题与 graphql-tools
和 AppSync。
不幸的是,这实际上不是 AppSync 今天支持的东西。然而,这是我们从其他客户那里听到的一个请求,我将使用此 post 作为 +1 来优先考虑它以用于将来的版本。
文档已更新,AWS在context中添加了一个新的字段info
,您可以按如下方式访问字段名称:
{
"version" : "2017-02-28",
"operation" : "Invoke",
"payload": {
"resolve": "$ctx.info.fieldName",
"query": $utils.toJson($context.arguments)
}
}
您可以参考这里的文档:
现在有一个 $context.info.selectionSetList
字段,其中包含请求的字段名称。 official docs 提供了一个示例并解释了一些关于接口和别名的特殊用例。