Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

103
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda