我使用AWS AppSync控制台在GraphQL模式中具有嵌套类型。例如:在函数中,用户应输入ID和可选的lang。然后应使用该lang来帮助标识字幕。但是,按如下所示设置架构和解析器之后:每次运行查询时,它都会返回带有所有lang的结果(当它只应返回用户指定的ID和lang时)。我不确定为什么会这样,当我分离函数并且不嵌套时,相同的架构和解析器就可以工作了。请帮忙!!! (我正在使用弹性搜索)
type Query {
getVideo(ID: String, lang: String): [video]
}
type video {
mainId: ID
title: String
subtitles: [subtitles]
}
type subtitles {
childId: ID
lang: String
caption: Boolean
}
以下是我的请求解析器-,附在video.subtitles 上(响应映射模板是为ES生成列表时的标准映射器):
{
"version": "2018-02-28",
"operation": "GET",
"path":"/lang/lang/_search",
#if(!$context.arguments.lang)
"params": {}
#else
"params": {
"body": {
"from": 0,
"size": 50,
"query": {
"bool": {
"must": [
{"match" : {"lang.keyword" : "${context.args.lang}" }}
]
}
}
}
}
#end
}
这是我正在运行的查询。我只想要与ID和指定的lang匹配的结果:
query vid(ID: "1234", lang: "eng") {
subtitles {
lang
caption
}
}
现在结果如下:注意它如何返回所有lang而不是eng。我不确定为什么请帮助!
{
"data":
"getVideo": [
"subtitles" : [
{
"lang": "dutch",
"caption": "false"
},
{
"lang": "eng",
"caption": "true"
},
{
"lang": "span",
"caption": "true",
}
]
]
}