Sequelize.js 如何使用sequelize和PostGIS按距离查询?
我有一个地址模型(Sequelize),声明方式如下:Sequelize.js 如何使用sequelize和PostGIS按距离查询?,sequelize.js,postgis,Sequelize.js,Postgis,我有一个地址模型(Sequelize),声明方式如下: var address = sequelize.define("address", { id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true }, coordinates: { type: DataTypes.GEOMETRY, allowNull: fa
var address = sequelize.define("address", {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
},
coordinates: {
type: DataTypes.GEOMETRY,
allowNull: false
},
/* ... */
});
现在我正试图检索半径为25公里的所有地址:
const distance = models.sequelize.fn('ST_Distance', models.sequelize.col('coordinates'), city.coordinates);
return models.address.findAll({
where: models.sequelize.where(distance, { $lte: 25000 })
});
这将转换为以下查询:
SELECT * FROM "addresses" AS "address" WHERE
ST_Distance("coordinates", "type" = \'Point\' AND "coordinates" IN (41.544031, -8.426646))
<= \'25000\';
从“地址”中选择*作为“地址”,其中
(41.544031,-8.426646)中的ST_距离(“坐标”,“类型”=“点”和“坐标”)