【发布时间】:2022-01-13 17:22:15
【问题描述】:
我有一个 Address 模型,它定义了 point 类型的 geometry 属性。
我想在传递latitude、longitude 和range 时创建一个函数,它会返回该范围内的所有地址(以米为单位)。我试图按照here 写的内容进行操作,但我得到了:
DatabaseError [SequelizeDatabaseError]: LWGEOM_dwithin: Operation on mixed SRID geometries (Point, 4326) != (Point, 0)
这是我在Address 模型中由point 定义的:
point: {
type: DataTypes.GEOMETRY('Point'),
allowNull: true,
},
这是我正在尝试编写的函数:
const findInRangeFrom = (latitude, longitude, range) => {
return Address.findAll({
attributes: {
include: [[
Sequelize.fn(
'ST_Distance',
Sequelize.col('point'),
Sequelize.fn('ST_MakePoint', longitude, latitude),
),
'distance',
]],
},
where: Sequelize.where(
Sequelize.fn(
'ST_DWithin',
Sequelize.col('point'),
Sequelize.fn('ST_MakePoint', longitude, latitude),
range,
),
true,
),
order: Sequelize.literal('distance ASC'),
});
};
我怎样才能做到这一点?
【问题讨论】:
标签: javascript node.js postgresql sequelize.js