Apollo graphQL: отправка вызовов из загрузчика данных в конце уровня глубины запроса - PullRequest
0 голосов
/ 19 июня 2020
• 1000

Что я хочу сделать, так это сделать фактические вызовы базы данных, чтобы вызвать dispatch () в загрузчике данных, когда были вызваны все преобразователи с уровня глубины запроса graphQL. Это должно обеспечить самые быстрые вызовы базы данных, поскольку все объекты одного типа могут вызываться в одном пакете.

Однако я не могу понять, как узнать, когда движок graphQL достиг конца уровня глубины запроса.

Для справки, если мы рассмотрим следующий запрос graphQL:

films {
  actors {
    name
  }
}

то, что я называю уровнем глубины, - это каждый вложенный объект: поэтому фильмы - это один уровень, актеры это следующий et c ...

Итак, когда все преобразователи для фильмов были вызваны, я хочу, чтобы загрузчик данных действительно выполнял запрос к базе данных, таким образом я уверен, что это будет только одно обращение к базе данных и получение всех фильмов. И, конечно же, сделайте то же самое для каждого уровня запроса.

Но я не мог придумать способ проверить, когда были вызваны все преобразователи уровня, я узнал, как проверить, когда движок graphQL прошел уровень, когда он вызывает первый преобразователь на следующем уровне, но не когда он вызывает последний преобразователь на данном уровне.

По сути, я хочу достичь того, на что способна java реализация graphQL делаем, как описано здесь: https://github.com/graphql-java/graphql-java/issues/1198#issuecomment -630927882 (control + f «глубина», чтобы найти точную часть в комментарии)

...