嘿哟。我有一个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日志中搜索
发布于 2022-03-03 20:17:51
答案在于ctx.source。ctx.source是父字段的映射,所以我可以从那里获取它。
{
"logType": "RequestMapping",
"path": [
"getThings"
],
"source": {
"key":"123"
},
"fieldName": "getThings",
"context": {
"arguments": {
"key": "123"
},
"stash": {},
"outErrors": []
},
"fieldInError": false,
"errors": [],
"parentType": "Query"
}https://stackoverflow.com/questions/71339994
复制相似问题