Преобразование функции gql в строку со вставленными переменными

Я определил этот запрос и успешно использую его в своем приложении:

export const GET_TEAM = gql`
  query($id: ID!) {
    getTeam(id: $id) {
      ...CompleteTeam
    }
  }
  ${fragments.team}
`

Но я хотел бы использовать его для издевательская цель, и для этого мне нужно это представление:

getTeam(id: 3) {
  id
  name
  isActivated
}

Есть ли простой способ вызвать gql с переменными, которые нужно выполнить?

Есть предложения, как это сделать с экземпляром ApolloClient. Но если возможно, я бы предпочел не привлекать клиента, так как я буду только издеваться над полученными данными.

Функция GQL возвращает документ GraphQL, который можно распечатать с помощью GraphQL.js. См. Это обсуждение в Github

Herku 17.11.2018 14:30

Интересный! Есть идеи, как это можно использовать для запроса с переменными?

Fellow Stranger 17.11.2018 15:06

Документ AST предоставляет исходную строку под GET_TEAM.loc.source.body

ManUtopiK 09.03.2021 01:37

@FellowStranger, смогли ли вы придумать более простое решение своего вопроса? Если да, поделитесь, пожалуйста :)

Eesa 24.08.2021 16:53
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
4
1 389
1

Ответы 1

Чтобы продолжить здесь: функция 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, но, как описано в комментарии, вы можете использовать принтер, как указано в комментарии. Не уверен, что он печатает то, что не является документами.

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