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 arrayy mapno se proporciona en el typemenú 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 typenecesitamos: 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 idde la primera tabla debe tener una relación con el idde 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

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir