Я работаю над проектом Коа. Когда я работаю с 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. Как я могу изменить структуру кода на более разумный и читаемый способ?