Я создаю GET
конечную точку для получения объекта с вычислением расстояния между этим объектом и текущим вошедшим в систему пользователем.
ниже моя функция:
module.exports = {
fn: async function (inputs, exits) {
//find all objects in databse
const party = await Party.find()
for(const p of party){
//check if user is logged to system
let user = this.req.session.currentUser
if(user){
user = await sails.helpers.user.findOne(user.id, false, false)
//get location data of party
const location = await Locations.findOne(p.location)
//calculating distance between user and party
const distanceBetween = await sails.helpers.user.getDistance(
user.latitude, user.longitude,
location.latitude, location.longitude
)
distanceTo = distanceBetween/1000;
//updated party object
const updatePartyDistanceTo = await Party.updateOne(p.id).set({distanceTo: distanceTo})
if(!updatePartyDistanceTo) return this.res.badRequest('Location has not been updated.')
}
}
//return all objects with updated
const updatedParty = await Party.find()
if(updatedParty){
return this.res.ok(updatedParty)
}else return this.res.notFound('Not found any events')
}
}
все выглядит хорошо, но меня беспокоит количество операций, выполняемых этой функцией, что приводит к очень долгому времени выполнения этого запроса.
например: для 2 возвращаемых объектов время составляет 3,7 с, для 5 возвращаемых объектов время составляет 7,9 s и для 10 возвращенных объектов время составляет 13,2
. Почему у меня возникает вопрос, когда мне следует рассчитывать расстояние для размещения двух объектов на основе географических данных, здесь, на сервере, на веб-интерфейсе или в мобильном приложении? ? или как я могу обновить эту функцию, чтобы ускорить ее?
спасибо за любую помощь :) счастливой пасхи