Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

99
Visualizações
Dynamic function name in Graphql

I have the following query

const COURSES = gql`
  query(
    $course: Course!
  ) {
    **english**(course: $course) {
      transfers(
        options: {
          desc: ["count_in", "count_out"]
        }
      ) {
        school {
          address
          symbol
          tokenType
        }
      }
    }
  }
`

Note the 5th line starting with 'english' so let's say I have 1000 different courses like ['english', 'politics', 'arts', .... 1000th course). How can I make this course name dynamic. I didn't develop the backend so change in schema is not an option for me. how can I avoid duplication by making course name dynamic.

To be clear I want to place variable name at the place of 'english' at line 5 so that this line can behave like below

   english(course: $course) {
   politics(course: $course) {
   art(course: $course) {
   anyCourseName(course: $course) {

Update: I'm calling above query using useQuery and passing parameter $course like below

useQuery(
    COURSES,
    {
      variables: {
        course, //this serves as variable $course in above query
      },
    }
  )
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

const COURSES = (c) => gql`
  query(
    $course: Course!
  ) {
    ${c}(course: $course) {
      transfers(
        options: {
          desc: ["count_in", "count_out"]
        }
      ) {
        school {
          address
          symbol
          tokenType
        }
      }
    }
  }
const query = COURSES('art')

?

about 4 years ago · Juan Pablo Isaza Relatório

0

You can simply do it like this:

const course = "english";

const COURSES = gql`
  query(
    $course: Course!
  ) {
    ${course}(course: $course) {
      transfers(
        options: {
          desc: ["count_in", "count_out"]
        }
      ) {
        school {
          address
          symbol
          tokenType
        }
      }
    }
  }
`

Or if you have multiple queries:

const courses = [
  "english",
  "politics",
  "art",
  "anyCourseName",
];

const queries = courses.reduce((acc, query) => (
  acc.concat(`${query}(course: $course) {
      transfers(
        options: {
          desc: ["count_in", "count_out"]
        }
      ) {
        school {
          address
          symbol
          tokenType
        }
      }
  }\n`)
), "");

console.log(queries);

then use it in your gql:

const COURSES = gql`
  query(
    $course: Course!
  )
  {
    ${queries}
  }
`;
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda