【发布时间】:2020-10-14 12:05:19
【问题描述】:
我有问题。我是 Sequelize 的新手,正在运行以下代码
const nearMeetis = await Meeti.findAll({
where: Sequelize.where( Sequelize.fn( "ST_DistanceSphere",
Sequelize.fn( "ST_MakePoint", parseFloat( -39.4193 ), parseFloat( -64.1795 ) ),
Sequelize.col( "location" )), {
[Op.lte]: 500
}),
logging: function(q){
//console.log("q:", q);
}
})
Sequelize生成的SQL是:
SELECT "idMeeti", "title", "slug", "speaker", "quantity", "description", "date", "hour", "address", "city", "state", "country", "location", "interested", "createdAt", "updatedAt", "userId", "groupId" FROM "meetis" AS "meeti" WHERE 1=1;
如果我在 SQL 查询编辑器中运行以下 SQL 查询并得到正确的结果:
SELECT ST_DistanceSphere(ST_MakePoint(-39.4193, -64.1795), "location") AS "distance", "idMeeti", "title"
FROM meetis
WHERE ST_DistanceSphere(ST_MakePoint(-39.4193, -64.1795), "location") < 500
我正在使用:
PostgreSQL 12.3 和 Sequelize 5.1.0
希望有人能帮助我。
提前致谢!
更新
问题已解决。问题是我将 Sequelize 导入并使用为 const Sequelize = require('Sequelize'),而不是使用 sequelize 从 db 实例 (const sequelize = require('../../config/db')) 导入。
【问题讨论】:
-
R u using postgis?,您的 postgres 服务器上似乎没有启用 PostGIS。
-
@cybercoder,是的,我正在使用 PostGIS。当我运行 SQL raw(在 tableplus 中)时,它可以工作,所以,我认为问题出在 Sequelize 中。谢谢
-
看到这个问题的答案,May Alias 是你的问题。 stackoverflow.com/questions/44012932/…
-
@cybercode,我也试过了,但没用。这篇文章基于 MySQL 而不是 PostgreSQL。谢谢。
-
这个问题以及更新中的答案值得更多的认可。在找到这个之前,我花了几个小时进行故障排除。谢谢。
标签: node.js postgresql sequelize.js