我正在尝试实现一个功能,该功能可以在特定点附近获取作业,但是面临与Sequelize形成查询的问题。如果我可以获得任何指导,那就太好了。
使用Sequelize版本:3.30.4
作业控制器使用
获取附近的作业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',
});
});
}
工作模式有' locationLatLng'声明为,
locationLatLng: {
type: DataTypes.GEOMETRY('POINT')
}
问题1:
错误:列Job.distance不存在
'距离' where子句中的属性被视为" Job"。" distance"在生成的查询中。
问题2:
由于我在前端使用分页,我使用了findAndCountAll而不是findAll,它删除/忽略了'属性'部分。由于这个距离'列永远不会计算。这个问题有什么解决方案吗?我已经阅读了他们的GitHub上的问题,并且知道它是一个有问题的问题。
任何帮助将不胜感激。
感谢。