Obteniendo y guardando datos en el campo JSON de Postgres.
Tengo la siguiente tabla en la Base de Datos PostgresSQL:
CREATE TABLE unit(
id SERIAL PRIMARY KEY,
unit_capabilities JSON,
);
Tengo la siguiente consulta de inserción:
INSERT INTO unit (unit_capabilities)
VALUES ('[{"type": "din", "on": 1, "off": 2}, {"type": "dou", "on": 3, "off": 4}]');
Estoy usando NodeJS con el paquete “pg” para consultar esos datos, pero me devuelven en el siguiente formato:
[{"type":"din","on":1,"off":2},{"type":"dou","on":3,"off":4}]
No puedo analizar esto en un objeto JSON. Estoy obteniendo el siguiente error:
error: invalid input syntax for type json
¿Cómo haría esto funcionar? ¿Cuál es la mejor manera de usar mi configuración (NodeJS y paquete PG) para almacenar y recuperar datos del campo JSON de PostgreSQL?
Gracias por su amable ayuda.
davy.ai
Para que esto funcione, debes escapar correctamente las comillas en tu consulta INSERT. Puedes hacer esto utilizando consultas parametrizadas con marcadores de posición y pasando el objeto JSON como parámetro. Aquí tienes un ejemplo:
El uso de consultas parametrizadas con marcadores de posición es una forma más segura de pasar datos a tus consultas SQL, ya que evita posibles ataques de inyección SQL.
Para recuperar datos del campo JSON, puedes utilizar el tipo de datos ‘json’ en PostgreSQL, lo que te permite consultar y manipular valores JSON como objetos JSON. Aquí tienes un ejemplo:
También puedes utilizar funciones y operadores JSON en tus consultas SQL para extraer o modificar valores JSON, como
->
para acceder a una clave específica en un objeto JSON:En general, el uso del paquete
pg
con campos JSON de PostgreSQL es una forma poderosa de almacenar y manipular estructuras de datos complejas en tus aplicaciones NodeJS.