嘿嘿。我有一个 AppSync 解析器,其中包含一个附加到解析器的字段。查询接受的参数与内部解析器需要的参数相同。为了简洁起见,我只想将它从上下文中传递下来,而不必指定它。解析器的数据源是一个 dynamoDB 表说模式看起来像
type Query {
getThings(key: String!): AResult!
}
type AResult {
getOtherThings(key: String!): String!
}
我可以这样构造一个查询
query Query {
getThings(key: "123") {
getOtherThings(key: "123")
}
}
这是笨拙和多余的。理想情况下,我只想创建一个看起来像
query Query {
getThings(key: "123") {
getOtherThings
}
}
解析器可以key
从请求的上下文中提取并重用它。getOtherThings
解析器的请求模板如下所示:
{
"version": "2017-02-28",
"operation": "Query",
"query": {
"expression" : "key = :key",
"expressionValues" : {
":key" : $util.dynamodb.toDynamoDBJson($context.arguments.key)
}
}
}
但是$context.guments.key
是null
。$context.args.key
和$ctx.args.key
和一样$ctx.arguments.key
。如果我在执行时检查请求中的日志,getThings
我可以看到预期的参数:
{
"logType": "RequestMapping",
"path": [
"getThings"
],
"fieldName": "getThings",
"context": {
"arguments": {
"key": "123"
},
"stash": {},
"outErrors": []
},
"fieldInError": false,
"errors": [],
"parentType": "Query"
}
所以我推测上下文不会在父解析器 ( getThings
) 和它的子解析器 ( getOtherThings
) 之间持续存在,但我无法从日志中看出这一点。
这甚至可能吗 - 我正在搜索 AWS 日志