Я определил этот запрос и успешно использую его в своем приложении:
export const GET_TEAM = gql`
query($id: ID!) {
getTeam(id: $id) {
...CompleteTeam
}
}
${fragments.team}
`
Но я хотел бы использовать его для издевательская цель, и для этого мне нужно это представление:
getTeam(id: 3) {
id
name
isActivated
}
Есть ли простой способ вызвать gql с переменными, которые нужно выполнить?
Есть предложения, как это сделать с экземпляром ApolloClient. Но если возможно, я бы предпочел не привлекать клиента, так как я буду только издеваться над полученными данными.
Интересный! Есть идеи, как это можно использовать для запроса с переменными?
Документ AST предоставляет исходную строку под GET_TEAM.loc.source.body
@FellowStranger, смогли ли вы придумать более простое решение своего вопроса? Если да, поделитесь, пожалуйста :)





Чтобы продолжить здесь: функция gql возвращает AST документа GraphQL (проанализированное древовидное представление запроса). С 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, но, как описано в комментарии, вы можете использовать принтер, как указано в комментарии. Не уверен, что он печатает то, что не является документами.
Функция GQL возвращает документ GraphQL, который можно распечатать с помощью GraphQL.js. См. Это обсуждение в Github