Creando matrices en Hasura
Hasura es una de mis formas favoritas de crear una API GraphQL administrada para mis aplicaciones. Lo encuentro fácil y directo, además de adecuado para una amplia gama de casos de uso. Sin embargo, desde que trabajé con Hasura, he visto surgir la misma pregunta una y otra vez: ¿cómo deberíamos hacer una matriz? Dado que array
y map
no se proporciona en el type
menú desplegable de filas, ¿cuál es la mejor manera de lograrlo?
A decir verdad, Hasura puede captar el concepto de matriz de diferentes maneras, y lo que sigue es un desglose de los métodos para abordar esto. Mi preferencia personal es la última opción que cubriremos, JSONB, pero analizaremos otras opciones en caso de que desee tomar otro camino, ya que cada opción tiene beneficios ligeramente diferentes.
Método 1: matrices literales, manualmente
Hasura no ofrece “ array
” como type
, pero podemos crear una matriz de cadenas seleccionando “Texto” y agregando corchetes al final, así:
Lo que obtenemos es text[]
y se nos pedirá que creemos matrices de una de dos maneras:
["one", "two"] // or {"one", "two"}
Método 2: crear una relación
También podemos crear una relación con otra tabla que sea una serie de elementos de texto. Para hacerlo, cree una fila que tenga el tipo de texto.
También crearemos una nueva tabla mediante el botón “ Agregar tabla ” en la barra lateral, y crearemos una fila muy simple, con una clave única para lo que type
necesitamos: texto, número entero o lo que sea necesario para los datos.
Ahora, haga clic en la pestaña “ Relaciones ”. En la tabla, seleccione la opción “ Relación de matriz ”, asígnele un nombre y haga referencia a la tabla original que se creó.
El id
de la primera tabla debe tener una relación con el id
de la segunda tabla que acabamos de crear.
Una vez guardada, debería ver la relación de la matriz reflejada en la tabla en la misma pestaña de relaciones, con una flecha que indica la dirección de la relación.
users.gameId → favoriteGames.id
Ahora podemos buscar la matriz en la pestaña “ GraphiQL”:
Método 3: JSONB
Lo que sigue es una de mis formas favoritas de crear una matriz en Hasura. Me gusta porque puede ser realmente eficaz. Podemos usar el tipo “JSONB” y crear una matriz seleccionando JSONB en el menú desplegable. Luego se nos solicitará de manera similar a la text[]
opción:
Cuando esté completo, verás así:
A partir de ahí, no solo podemos agregar las matrices a su consulta como se indicó anteriormente, sino que también podemos buscar por etiqueta a través de múltiples índices, y su pestaña GraphiQL facilita la exploración. Mira cuando filtras las etiquetas por lo que contiene “animación”:
query MyQuery { codesamples(where: {tags: {_contains: "animation"}}) { userId name id }}
Sin embargo, una búsqueda como esta no necesariamente tiene un buen rendimiento desde el primer momento, especialmente cuando hay grandes cantidades de datos. Por suerte, podemos definir qué campos nos gustaría indexar. Desde la pestaña “Datos” en la parte superior, seleccione el grupo “SQL” en el panel lateral, y en esa área podemos definir qué campos nos gustaría indexar para mantener una búsqueda eficaz. En este ejemplo, crearemos un índice en el campo “etiquetas”:
create index codesample_gin on codesamples using gin(tags)
Esto ejecutará la consulta e indexará esta búsqueda, lo que la hará más eficaz en el futuro.
terminando
Hasura tiene una maravillosa experiencia de desarrollador para configurar API GraphQL rápidas y fáciles de usar. Para aquellos que estén interesados en configurar matrices con Hasura, espero que este artículo sea útil.
Gracias a Adron Hall de Hasura que revisó esta publicación.
Deja un comentario