Creación de matrices en Hasura | Programar Plus

Hasura es una de mis formas favoritas de crear una API GraphQL administrada para mis aplicaciones. Lo encuentro fácil y sencillo, así como adecuado para una amplia gama de casos de uso. Sin embargo, desde que trabajo con Hasura, he visto surgir la misma pregunta una y otra vez: ¿Cómo debemos hacer una matriz? Dado el hecho de que array y map no se proporcionan en el type menú desplegable para filas, ¿cuál es la mejor manera de lograr esto?

A decir verdad, Hasura puede capturar el concepto de una 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 vamos a cubrir, 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 un 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 estas dos maneras:

["one", "two"] 
// or 
{"one", "two"}

inserción de fila con tipo {"foo", "bar"} o ["foo", "bar"]

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 a través de la opción “Agregar tablaen la barra lateral, y crearemos una fila muy simple, con una clave única para el type necesitamos: texto, número entero o lo que sea necesario para los datos.

Ahora, haga clic en el “Relaciones” pestaña. En la tabla, seleccione el “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 que se guarde, 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 el “GraphiQL” pestaña:

Método 3: JSONB

Lo que sigue es una de mis formas favoritas de crear una matriz en Hasura. Me gusta porque puede ser muy eficaz. Podemos usar el tipo “JSONB” y crear una matriz seleccionando JSONB en el menú desplegable. Luego se nos indicará de manera similar a la text[] opción:

Cuando esté lleno, se verá 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 filtro 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 tiene necesariamente un rendimiento inmediato, especialmente cuando hay grandes cantidades de datos. Afortunadamente, 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, haciéndola 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 arreglos con Hasura, espero que este artículo sea útil.

Gracias a Salón Adron de Hasura que revisó esta publicación.

(Visited 2 times, 1 visits today)