Получение всех вовлеченных сущностей в данном запросе - PullRequest
0 голосов
/ 26 сентября 2018

Учитывая запрос GraphQL, подобный следующему:

{
   a { 
      b,
      c: { x, y }
   }
}

Где a, b и c являются типами, есть прямой способ получить вовлеченные типы в этом запросе в корневой функции?

const root = {
    a: (x, y, z) => {
       // I want to know that the query involves a, b and c
    }
}

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

Обновление

После двойной проверки документов я обнаружил, что могу использовать шаблон посетителя для обхода данного GraphQL AST.

const { visit } = require('graphql/language/visitor')

const root = {
  a: (x, y, ast) => {
    visit(ast.operation, {
      enter(node) {
        if (node.kind == 'Name') {
          console.log(node.value)
        }
      }
    })
  }

Это даст a, b, c, x, y, но я все еще выясняю, как получить типы GraphQL узлов.

...