簡體   English   中英

使用 pg 和 postgresqlDB 在 node.js 中准備插入語句

[英]Prepared insert statement in node.js using pg and postgresqlDB

我正在嘗試將 Polygon 寫入我的 Postgresql 數據庫。 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',

感謝您提供任何幫助或想法。 :)

Hy Oivalf,我有同樣的情況,但我的情況是查詢更新,這里是我的示例查詢

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'

它對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM