Не удалось поймать исключение из функции отклонения Promise - PullRequest
0 голосов
/ 02 ноября 2018

Я работаю над проектом Коа. Когда я работаю с API, он должен сначала проверить местоположение пользователя, а затем зарегистрировать обучение.

training.js // Handle router

const registerTraining = async ctx => { 
  ... // get user location
  trainingController.registerTraining(ctx.params.trainingId, ctx.user.openId, {longitude: ctx.params.longitude, latitude: ctx.params.latitude}).then((result) => {
    ctx.body = {
      code: 0,
      msg: 'success'
    }
  }).catch((err) => {
    console.log(err)
    ctx.body = {
      code: 2,
      msg: 'fail'
    }
  })
}

trainingController.registerTraining // Register training and operate DB

registerTraining = async (trainingId, openId, userLocation) => {
  return new Promise((resolve, reject) => {
    models.trainings.findOne({_id: trainingId}, (err, doc) => {
      if (err) {
        reject(err)
        // return
      }
      if (doc.register_location[0]) {
        let isNear = false
        validate location ...
        if (!isNear) {
          reject('Should be closer to the register location')
          // return
        }
      }    
      operate DB ...
  })
}

Я не могу поймать reject () в training.js. Как я могу изменить структуру кода на более разумный и читаемый способ?

...