Выборка полей по типу запроса в резольвере

В: Я хотел бы узнать, какие поля выбирает пользователь в запросе GraphQL в Absinthe GraphQL Framework.

Мне тяжело ковыряться в %Absinthe.Resolution{} так как это большой кусочек состояния, он идет с фрагментированной документацией по многим файлам.

Приведен следующий пример. Пользователь запрашивает сообщение, которое может вернуть тип объединения. Пользователь выбирает id, role, parentId а также slug на каждом Post-типа встречается в ответе.

fragment Component on Component {
  id
  role
  parentId
}

{
  post(slug: "super-paloma-sunglasses") {
    ... on Post {
      ...Component
      slug
    }
  }
}

Теперь у меня есть решатель:

def post(_root, %{slug: slug}, info) do
  # fields_by_type = queried_fields(info)
  result = App.Repo.execute(:document_by_slug, [slug])
  {:ok, result}
end

Теперь моя проблема в том, что я не могу собрать необходимую информацию от info без полного понимания всех деталей реализации Absinte.Resolution,

Ps Будучи новичком в реализации Elixir Graphql "Абсент". Я, очевидно, продолжу работать над решением, и если я найду один пост здесь, но, возможно, кто-то еще сталкивался с чем-то подобным и уже нашел решение.

Pps: Я не должен быть таким сложным, так как это должно быть довольно распространенным вариантом использования, поскольку GraphQL позволяет серверу быть осторожным, например, с данными, которые он выбирает из базы данных.

0 ответов

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