es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo pasar una variable de JavaScript a una consulta de GraphQL?

Tengo una consulta de GraphQl muy simple, pero estoy teniendo problemas para hacer que la consulta sea dinámica según la entrada. Digamos que recibes una cadena en JavaScript que deseas pasar a la consulta, ¿cómo se hace? Toma el ejemplo a continuación, ¿cómo podría reemplazar la cadena codificada “3111” en el campo Sku del producto, en lugar de insertar el valor de la variable myString? Solo recibo errores cuando intento pasarlo.

let myString = "3111"

query getProductBySku {
  site {
    product(sku: "3111") {
      id
      entityId
      name
      sku
    }
  }
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para hacer la consulta dinámica de GraphQL basada en un valor de entrada, puedes usar template literals y pasar la variable de tipo string como un parámetro al template literal. Aquí tienes un ejemplo de cómo reemplazar la cadena “3111” por la variable myString:

    let myString = "3111";
    
    const query = `query getProductBySku($sku: String) {
      site {
        product(sku: $sku) {
          id
          entityId
          name
          sku
        }
      }
    }`;
    
    // Usa una biblioteca como Apollo Client para ejecutar la consulta con la variable.
    

    En el código anterior, hemos utilizado un template literal para la consulta y hemos usado $sku como una variable. Cuando ejecutes esta consulta, debes pasar el valor de myString como parámetro. Puedes usar una biblioteca como Apollo Client o Relay para ejecutar la consulta con la variable. Aquí tienes un ejemplo para Apollo Client:

    import { gql, useQuery } from '@apollo/client';
    
    let myString = '3111';
    
    const GET_PRODUCT_BY_SKU = gql`
      query getProductBySku($sku: String) {
        site {
          product(sku: $sku) {
            id
            entityId
            name
            sku
          }
        }
      }
    `;
    
    function Products() {
      const { loading, error, data } = useQuery(GET_PRODUCT_BY_SKU, {
        variables: { sku: myString },
      });
    
      if (loading) return 'Cargando...';
      if (error) return `¡Error! ${error.message}`;
    
      return (
        <ul>
          {data.site.product.map((product) => (
            <li key="{product.entityId}">{product.name}</li>
          ))}
        </ul>
      );
    }
    

    En el ejemplo anterior, hemos utilizado el hook useQuery de Apollo Client para ejecutar la consulta con la variable. Hemos pasado el valor de myString como parámetro a la opción variables de useQuery. Esto reemplazará la variable $sku en la consulta con el valor de myString cuando se ejecute la consulta.

Comments are closed.