Relaciones
Las relaciones le permiten hacer consultas de objetos anidados si las tablas/vistas en la base de datos están conectadas.
Las relaciones de esquema de GraphQL pueden ser
- relaciones de objetos (uno a uno)
- relaciones de matriz (uno con muchos)
Relaciones de objetos
Digamos que desea consultar workspace
y más información sobre el user
que lo creó. Esto es posible utilizando consultas anidadas si existe una relación entre los dos. Esta es una consulta uno a uno y por lo tanto llamada una relación de objeto.
Un ejemplo de una consulta anidada se parece a esto:
query {workspace {idnameowner {idname}}}
En una única consulta, puede buscar el espacio de trabajo y su información de usuario relacionada. Esto puede ser muy potente porque puede anidar a cualquier nivel.
Relaciones de matriz
Veamos un ejemplo de consulta para las relaciones de matriz.
query {users {idnamemessages {idmessagechannel_id}}}
En esta consulta, puede buscar usuarios y para cada usuario, está buscando los (varios) mensajes que envió ese usuario. Como un usuario puede tener varios mensajes, esta sería una relación de matriz.
Las relaciones pueden ser capturadas por restricciones de clave extranjera. Las restricciones de clave extranjera aseguran que no haya datos pendientes. La consola de Hasura sugiere automáticamente relaciones según estas restricciones.
Aunque las restricciones son opcionales, se recomienda hacer cumplir estas restricciones para la consistencia de datos.
Las consultas anteriores no funcionarán aún porque no hemos definido las relaciones todavía. Pero esto da una idea de cómo funcionan las consultas anidadas.
- Build apps and APIs 10x faster
- Built-in authorization and caching
- 8x more performant than hand-rolled APIs