我试图写一个多边形到我的Postgresql DB。Postgis已安装,我试图执行一个示例语句,它正在工作。到目前为止一切顺利。
下面是我的例子:
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');
所以我试着把它转换成一个准备好的语句,我的代码看起来像这样:
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
}
})
变量的值如下所示:
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"
如果我运行代码,我得到以下错误:
error: parse error - invalid geometry
length: 147,
severity: 'ERROR',
code: 'XX000',
detail: undefined,
hint: '"ST" <-- parse error at position 2 within geometry',
感谢任何帮助或想法。:)
我有相同的情况,但在我的情况下是查询更新,这里我的示例查询
const updatePole =
'UPDATE public."Pole" SET geom = $1, status = $2, WHERE id = $3'
当我在表格数据上工作时它工作得很好,但是当我在地图上改变时它不工作,并使数据值为null
。我试着使用这个代码
const updatePole =
'UPDATE public."Pole" SET geom = ST_AsGeoJSON($1,4326::integer), status = $2, WHERE id = $3'
这对我来说很有效。