为GeoSearch定义Sequelize模型

时间:2019-06-12 10:09:20

标签: javascript node.js mongodb geolocation sequelize.js

我正在为地理搜索创建一个应用程序。我已经使用MongoDB做到了,但是我正在努力使用Sequelize做到这一点。 我在MongoDB中创建了一个架构,如下所示。

const GeoSchema = new Schema({
  type: {
    type: String,
    default: 'Point'
  },
  coordinates: {
    type: [Number],
    index: '2dsphere'
  }
});

const UserSchema = new Schema({
  name: {
    type: String,
    required: [true, 'Name field is required']
  },
 
  geometry: GeoSchema
});

以下是从数据库中查找位置的代码:

router.get('/users', async (req, res, next) => {
  try {
    const users = await User.aggregate([
      {
        $geoNear: {
          near: {
            type: 'Point',
            coordinates: [parseFloat(req.query.lng), parseFloat(req.query.lat)]
          },
          distanceField: 'dist.calculated',
          maxDistance: parseFloat(req.query.maxDistance),
          spherical: true
        }
      }
    ]);
    if (users.length <= 0) {
      return res
        .status(200)
        .send({ message: 'No users found within your range' });
    } else {
      return res.status(200).send(users);
    }
  } catch (error) {
    console.log(error);
  }
});

请帮助使用Sequelize实现相同的功能。

0 个答案:

没有答案