Estoy tratando de escribir un polígono en mi base de datos Postgresql. Postgis está instalado y traté de ejecutar una declaración de ejemplo y está funcionando. Hasta aquí todo bien.
Aquí está mi ejemplo:
INSERT INTO assets VALUES('test', 'test2id', 210, ST_Polygon('LINESTRING(16.0 14.0, 20.0 14.0, 20.0 12.0, 16.0 12.0,16.0 14.0)':: geometry, 4326), 'Crime');Así que traté de convertir esto en una declaración preparada y mi código se ve así:
const Pool = require('pg').Pool const pool = new Pool({ user: process.env.DB_USER, host: process.env.DB_HOST, database: process.env.DB_DATABASE, password: process.env.DB_PASSWORD, port: process.env.DB_PORT, }) const sql = "INSERT INTO assets (title, id, duration, geodata, genre) VALUES($1, $2, $3, $4, $5);" const values = [title, crid, duration, poly_string, genre] pool.query(sql, values, (error, results) => { if (error) { response.status(500).send("Internal Server Error") throw error } })Los valores de las variables son así:
poly_string = "ST_Polygon('LINESTRING(16 14, 20 14, 20 12, 16 12, 16 14)':: geometry, 4326)" title = "test" id = "IHSJSKLANSHKLSHJSMSNSD" duration = 1290 genre = "crime"Si ejecuto el código me sale el siguiente error:
error: parse error - invalid geometry length: 147, severity: 'ERROR', code: 'XX000', detail: undefined, hint: '"ST" <-- parse error at position 2 within geometry',Gracias por cualquier ayuda o ideas. :)
Hy Oivalf, tengo el mismo caso, pero en mi caso es para consulta Actualizar, aquí mi consulta de ejemplo
const updatePole = 'UPDATE public."Pole" SET geom = $1, status = $2, WHERE id = $3' cuando trabajo en datos de formulario en la tabla Funciona bien, pero cuando cambio en los mapas no funciona, y hago que el valor de los datos sea null . Estaba tratando de usar este código
const updatePole = 'UPDATE public."Pole" SET geom = ST_AsGeoJSON($1,4326::integer), status = $2, WHERE id = $3'y me esta funcionando