无法确定参数$1(几何)的数据类型

问题描述 投票:0回答:1

案例A

SELECT ST_DistanceSphere(
ST_GeomFromText('POINT(127.058923 37.242621)', 4326), "geometryType")as distance FROM "MyTable"
WHERE ST_DistanceSphere(
ST_GeomFromText('POINT(127.058923 37.242621)', 4326), "geometryType") < 500;

案例B

SELECT ST_DistanceSphere(
ST_GeomFromText('POINT(${longitude} ${latitude})', 4326), "geometryType")as distance FROM "MyTable"
WHERE ST_DistanceSphere(
ST_GeomFromText('POINT(${longitude} ${latitude})', 4326), "geometryType") < 500;

按照A执行时,查询正常成功,但是按照B执行时,出现“无法确定参数$1的数据类型”的错误。

PostGIS 已正确安装在我的数据库中。

我尝试过使用 Prisma 的 $queryRaw 和 Node 包 postgres,但问题仍然没有解决。

node.js postgresql geometry nestjs postgis
1个回答
0
投票

就像函数名称所暗示的那样,

ST_GeomFromText()
接受
text
输入。第一个参数必须是有效格式的单个(连接)字符串。

连接并传递单个参数:

SELECT ST_GeomFromText('POINT(127.058923 37.242621)', 4326);

翻译为:

SELECT ST_GeomFromText(${point}, 4326);

或者让Postgres为您连接经度和纬度:

SELECT ST_GeomFromText(format('POINT(%s %s)', '127.058923', '37.242621'), 4326)

翻译为:

SELECT ST_GeomFromText(format('POINT(%s %s)', ${longitude}, ${latitude}), 4326)

Postgres 中有多种连接方式:

相关:

© www.soinside.com 2019 - 2024. All rights reserved.