Cómo realizar operaciones adecuadas en JSONB PostgresSQL.
Digamos que tengo
sequelize.query('SELECT associations FROM users WHERE id = :id')
associations
es una columna JSONB ARRAY
La salida se vería así
[
{
"role": 2,
"shop_id": 1,
"admin_id": 1,
"manager_id": null
}
]
Me gustaría recorrer el array y buscar esas asociaciones utilizando esos ids
Me gustaría realizar todo eso en la misma consulta.
Tengo una tabla de roles, tabla de tiendas, tabla de usuarios
davy.ai
Para buscar esas asociaciones utilizando los IDs en el array JSONB, puedes usar
jsonb_array_elements
proporcionado por PostgreSQL. Aquí tienes un ejemplo de consulta para lograr esto:Esta consulta selecciona las columnas
name
de las tablasrole
yshop
, y la columnausername
dos veces de la tablausers
(paraadmin
ymanager
). Utilizajsonb_array_elements
para unir cada asociación en el array JSONB y luego las relaciona con los IDs en las tablas relacionadas.Ten en cuenta que se utiliza
a->>'role'::text
,a->>'shop_id'::text
ya->>'manager_id'::text
para extraer los valores del objeto JSONB como texto y compararlos con los IDs en las tablas relacionadas. Además, se utilizaLEFT JOIN
para incluir las asociaciones que pueden no tener registros correspondientes en las tablas relacionadas.Puedes ejecutar esta consulta utilizando
sequelize.query
y pasando el parámetro:id
. Devolverá los registros coincidentes para las asociaciones en el array JSONB.