Я работаю над приложением вроде uber, у меня есть коллекция драйверов с currentPosition {latitude, longitutde}
И я хочу получить драйверы далеко на 200 м, как я это сделал, похоже это на модели:
driverSchema.methods.CloseDriver = function (userCurrentPosition,next) {
try {
const distance = geolib.getPreciseDistance(
userCurrentPosition,
this.currentPosition
);
return distance <= 200
} catch (error) {
return next();
}
}
, а затем с запросом публикации с текущим положением пользователя на нем
const parsedBody = Object.setPrototypeOf(req.body, {});
if(parsedBody.hasOwnProperty("latitude") && parsedBody.hasOwnProperty("longitude")){
const { latitude , longitude } = req.body
const currentPosition = { latitude , longitude }
const drivers = await Driver.find({})
const eligibleDrivers = drivers.filter((driver)=> driver.CloseDriver(currentPosition))
return res.status(200).json({
status : 200 ,
eligibleDrivers
});
, если у нас большой массив драйверов, который не будет очень эффективным, если есть другой способ?