【发布时间】:2015-06-27 01:38:15
【问题描述】:
我正在使用 Angular SDK 在 PostGIS 中添加和编辑环回几何图形,并且我可以正常工作:
ProjectGeoms.upsert({"id":"129","projectGeom": {"type":"Polygon","coordinates":[[arrays of x/y co-ordinates]],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}}}, successCallback, errorCallback)
正在运行的 SQL 查询是:
loopback:connector:postgresql SQL: UPDATE "public"."project_geom" SET "ref"=$1,"project_geom"=$2
Parameters: 129,{"type":"Polygon","coordinates":[[arrays of x/y co-ordinates]],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}} +2ms
这是针对已经存在的几何图形。但是,当我为不存在的几何图形(相同的 JSON 结构,但 id 为 124)添加它时,它就不起作用了。
正在运行的 SQL 查询是:
loopback:connector:postgresql SQL: INSERT INTO "public"."project_geom" ("ref","project_geom") SELECT $1,$2 RETURNING
Parameters: 124,{"type":"Polygon","coordinates":[[arrays of x/y co-ordinates]],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}} +2ms
完整的错误信息如下:
loopback:connector:postgresql error: syntax error at end of input
at Connection.parseE (C:\Bitnami\wappstack-5.4.30- 0\apache2\htdocs\project\api\node_modules\loopback-connector-postgresql\node_modules\pg\lib\connection.js:534:11)
at Connection.parseMessage (C:\Bitnami\wappstack-5.4.30-0\apache2\htdocs\project\api\node_modules\loopback-connector-postgresql\node_modules\pg\lib\connection.js:361:17)
at Socket.<anonymous> (C:\Bitnami\wappstack-5.4.30-0\apache2\htdocs\project\api\node_modules\loopback-connector-postgresql\node_modules\pg\lib\connection.js:105:22)
at Socket.emit (events.js:95:17)
at Socket.<anonymous> (_stream_readable.js:765:14)
at Socket.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:427:10)
at emitReadable (_stream_readable.js:423:5)
at readableAddChunk (_stream_readable.js:166:9)
at Socket.Readable.push (_stream_readable.js:128:10) +15ms
如果我直接在 Postgres 中运行以下查询:
INSERT INTO project_geom (ref,project_geom) VALUES (124,'{"type":"Polygon","coordinates":[[arrays of x/y co-ordinates]],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}}'::json);
我可以毫无问题地插入值。
表数据架构为(ref::integer, project_geom::json)
【问题讨论】:
-
插入查询不能就这样结束。
RETURNING后面应该跟一个列表列,要返回的表达式。 -
感谢 Jakub - 你让我走上了正轨 - 随时提交答案
-
我认为如果你自己回答这个问题会更好,因为你知道发生了什么,它会帮助其他人。
-
好的,或者我们都可以回答!
-
是的,这是在一个单独的函数中:
IF TG_OP = 'INSERT' THEN INSERT INTO project_sites (geom,ref) VALUES(ST_Multi(ST_GeomFromGeoJSON(NEW.project_geom::text)),NEW.ref); RETURN NEW;顺便说一句,这是一个可编辑的视图..
标签: node.js postgresql postgis loopbackjs