给出如下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
}
}
我已经检查过可以遍历上下文信息并以递归方式获取该信息,但是我忽略了是否已有某种方法可以轻松地获取所需的信息。
仔细检查docs之后,我发现可以使用 visitor模式遍历给定的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类型。