Вложенный тип не получает пользовательский ввод от родителя

У меня есть вложенный тип в моей схеме GraphQL с помощью консоли AWS AppSync. Например: в функции пользователь должен ввести идентификатор и опционально lang. Этот язык следует использовать для идентификации субтитров. Однако после настройки моей схемы и распознавателя, как показано ниже: каждый раз, когда я запускаю запрос, он возвращает результат со всеми langs (когда он должен только возвращать идентификатор и lang, указанные пользователем). Я не уверен, почему, когда я разделяю функцию, а она не является вложенной, эта же схема и распознаватель работают. пожалуйста помоги!!! (Я использую Elastic Search)

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
  } 

Это запрос, который я выполняю. Я хочу только результаты, которые соответствуют идентификатору и указанному языку:

query vid(ID: "1234", lang: "eng") {
    subtitles {
       lang
       caption
    }
 }

Теперь результат следующий: обратите внимание, что он возвращает ВСЕ langs вместо только eng. Я не уверен, почему это, пожалуйста, помогите!

{
  "data":
     "getVideo": [
         "subtitles" : [
            {
              "lang": "dutch",
              "caption": "false"
            },
           {
              "lang": "eng",
             "caption": "true"
           },
           {
              "lang": "span",
              "caption": "true",
           }
      ]
    ]
   }

1 ответ

Не уверен, что получил ваше сообщение, но когда вы хотите вернуть вложенный объект, вы должны использовать Inner Hits.

Вы также можете установить свое поле _source для получения только внутренних попаданий.

Другие вопросы по тегам