Здесь следует немного поработать: функция gql
возвращает документ GraphQL AST (синтаксический анализ запроса в виде дерева).С AST работать гораздо проще, чем со строками - по крайней мере, когда это становится более сложным.
На ваш вопрос в комментарии: Оказавшись в пространстве AST, вы можете выполнять все виды преобразований.Это может быть сделано, например, с помощью шаблона посетителя.GraphQL.js также поставляется с visit
функцией , которая позволяет заменять узлы.Этот код должен служить источником вдохновения, никаких гарантий того, что он работает;)
function valueToNode(value) {
if (typeof value === 'string') {
return { kind: 'StringValue', value };
} else if (typeof value === 'number' && Number.isInteger(value)) {
// return integer value node
}
// all other value nodes...
}
visit(ast, {
VariableNode: {
enter(node) {
return valueToNode(variables[node.name.value]);
}
}
}
Я не уверен, следует ли вам покинуть пространство AST, но, как описано в комментарии, вы можете использовать принтер, как указано в комментарии.,Не уверен, печатает ли он вещи, которые не являются документами.