Node.js Sequelize:地理空间查询以查找距离某个位置最近的点
我正在尝试实现一个功能,该功能可以在接近某个特定点的位置获取作业,但在使用Sequelize生成查询时会遇到问题。如果我能得到任何关于它的指导,那就太好了 使用Sequelize版本:3.30.4 作业控制器使用Node.js Sequelize:地理空间查询以查找距离某个位置最近的点,node.js,postgresql,sequelize.js,postgis,Node.js,Postgresql,Sequelize.js,Postgis,我正在尝试实现一个功能,该功能可以在接近某个特定点的位置获取作业,但在使用Sequelize生成查询时会遇到问题。如果我能得到任何关于它的指导,那就太好了 使用Sequelize版本:3.30.4 作业控制器使用 getNearByJobs(req, res) { // Radius in metres const radius = 25000; const dummyPreferredLocation = "0101000000F6DA221FAAE842C09895ED439
getNearByJobs(req, res) {
// Radius in metres
const radius = 25000;
const dummyPreferredLocation = "0101000000F6DA221FAAE842C09895ED439E1E6240";
return Job
.findAll({
attributes: [
[db.sequelize.fn("ST_Distance_Sphere", dummyPreferredLocation, db.sequelize.col('"Job"."locationLatLng"')), 'distance']
],
where: {
active: true,
distance: {
$lte: radius
}
},
include: [{
model: Company,
attributes: {
exclude: ['active', 'createdAt', 'updatedAt']
}
}],
distinct: true,
offset: req.query.offset,
limit: req.query.limit
})
.then(jobs => res.status(200).json(jobs))
.catch(error => {
console.log(error);
return res.status(400).send({
message: 'Job Not Found',
});
});
}
作业模型的“LocationLatling”声明为
locationLatLng: {
type: DataTypes.GEOMETRY('POINT')
}
第1期:
错误:列Job.distance不存在
where子句中的“距离”属性在生成的查询中被视为“作业”。“距离”
第二期:
因为我在前端使用分页,所以我使用findAndCountAll而不是findAll,它去掉/忽略了“attributes”部分。因此,永远不会计算“距离”列。这个问题有什么解决办法吗?我读过他们的GitHub上的问题,知道sequelize也有这个问题
任何帮助都将不胜感激
谢谢