簡體   English   中英

postgres SQL查詢在節點JS中拋出錯誤

[英]postgres SQL query throws error in node JS

我設置了一個API,在客戶端用戶可以計算到點之間的路由。 但是,我遇到了psql查詢的麻煩,它在postgres中工作,但是當我在節點JS中使用相同的查詢時,我收到了一個錯誤。

我正在使用nodeJS,Express和Postgres。 如果我在pgAdmin4中運行下面的查詢,我會得到預期的輸出。

SELECT b.gid, b.the_geom, b.cost_s, b.length_m FROM pgr_dijkstra('SELECT gid::bigint as id, source::bigint, 
                                           target::bigint, cost_s::double precision as cost, 
                                           reverse_cost_s::double precision as reverse_cost FROM ways 
                                           WHERE the_geom && ST_Expand((SELECT ST_Collect(the_geom) 
                                           FROM ways_vertices_pgr WHERE id IN(589143, 581050)), 0.01)', 
589143, 581050) a LEFT JOIN ways b ON (a.edge = b.gid);

但是當我在Node Js中使用相同的查詢(見下文)時,我收到一條錯誤消息,指出error: syntax error at or near "&&" 我究竟做錯了什么?

const start = parseInt(request.params.start)
const end = parseInt(request.params.end)

const sql2 = 
     "SELECT b.gid, b.the_geom, b.cost_s, b.length_m FROM pgr_dijkstra('SELECT gid::bigint as id, source::bigint,"+
     "target::bigint, cost_s::double precision as cost," +
     "reverse_cost_s::double precision as reverse_cost FROM ways" + 
     "WHERE the_geom && ST_Expand((SELECT ST_Collect(the_geom)" + 
     "FROM ways_vertices_pgr WHERE id IN(" + start + "," + end + ")), 0.01)'," +
      start + "," + end + ") a LEFT JOIN ways b ON (a.edge = b.gid);"

得到了答案。 我使用語法$1 ...而不是startend ,並添加了參數的數據類型。 在我的情況下, ineteger

SELECT b.gid, b.the_geom, b.cost_s, b.length_m FROM pgr_dijkstra('SELECT gid::bigint as id, source::bigint, 
                                           target::bigint, cost_s::double precision as cost, 
                                           reverse_cost_s::double precision as reverse_cost FROM ways 
                                           WHERE the_geom && ST_Expand((SELECT ST_Collect(the_geom) 
                                           FROM ways_vertices_pgr WHERE id IN(' || $1::integer || ',' || $2::integer ||')), 0.01)', 
    $1::integer, $2::integer) a LEFT JOIN ways b ON (a.edge = b.gid);

暫無
暫無

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

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