Node.js Sequelize:地理空间查询以查找距离某个位置最近的点

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

我正在尝试实现一个功能,该功能可以在接近某个特定点的位置获取作业,但在使用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',
      });

    });
}
作业模型的“LocationLatling”声明为

locationLatLng: {
      type: DataTypes.GEOMETRY('POINT')
}
第1期:

错误:列Job.distance不存在

where子句中的“距离”属性在生成的查询中被视为“作业”。“距离”

第二期:

因为我在前端使用分页,所以我使用findAndCountAll而不是findAll,它去掉/忽略了“attributes”部分。因此,永远不会计算“距离”列。这个问题有什么解决办法吗?我读过他们的GitHub上的问题,知道sequelize也有这个问题

任何帮助都将不胜感激

谢谢