Где рассчитаны расстояния? Backend против FrontEnd || Мобильное приложение - PullRequest
0 голосов
/ 12 апреля 2020

Я создаю 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

. Почему у меня возникает вопрос, когда мне следует рассчитывать расстояние для размещения двух объектов на основе географических данных, здесь, на сервере, на веб-интерфейсе или в мобильном приложении? ? или как я могу обновить эту функцию, чтобы ускорить ее?

спасибо за любую помощь :) счастливой пасхи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...