Saltar al contenido

Input query

La input query es el archivo GraphQL que declara qué datos recibe una Shopify Function en tiempo de ejecución. Una Function solo ve lo que su input query pide, y como el input está limitado a 128 kB, decidir qué campos entran es tanto trabajo como la lógica.

También: run.graphql, consulta de entrada, Function input

Es el archivo que más se subestima al escribir una Function. La lógica suele ser corta; lo que decide si la Function funciona en un carrito grande es lo que pediste.

El límite de 128 kB no es teórico

Con un carrito de 10 líneas sobra espacio para todo. Con un bloc de pedido mayorista de 200 líneas, cada campo de más se multiplica por 200. Pedir el título, la descripción y las imágenes de cada variante “por si acaso” es la forma más rápida de que una Function que pasaba las pruebas falle en el pedido real de un cliente.

La regla que sigo: la input query pide exactamente los campos que el código lee, y cuando añado un campo al código, lo añado también aquí, en el mismo commit.

Los alias son parte del diseño

Un metacampo llega con su namespace y su key, lo que produce un código feo. Con un alias llega con el nombre que tiene sentido para la lógica:

query RunInput {
  cart {
    lines {
      quantity
      merchandise {
        __typename
        ... on ProductVariant {
          id
          title
          casePack: metafield(namespace: "b2b", key: "case_pack") { value }
        }
      }
    }
  }
}

Ese casePack es el mismo metacampo, con un nombre que se lee. Y __typename está ahí porque una línea de carrito no siempre es una variante de producto, y descartar lo que no lo es antes de tocarlo evita el error más común.

Un ejemplo completo con su función y sus pruebas está en shopify-checkout-lab.

Ver el glosario completo

¿Necesitas esto en tu tienda?

Hablemos de tu proyecto