Я новичок в ES6, функции стрелок и обещания, и я не могу понять, как их использовать, еще хуже вместе.
Я запустил проект с генератором REST (https://github.com/diegohaz/rest)), и он работает нормально, но мне нужно изменить часть аутентификации.
Мне нужно вернуть данные со стороннего сервера во время аутентификации. Я создал функцию, которая возвращает данные правильно с помощью axios, однако я не могу вернуть эту информацию вместе с другой информацией (из этого проекта), ответ отправляется раньше.
Ниже сгенерированный код, почти неприкасаемый, я добавил только extraData: user.getExtraData(user)
// function in auth controller file
export const login = ({ user }, res, next) => {
sign(user.id)
.then((token) => ({
token, user: user.view(true), extraData: user.getExtraData(user)
}))
.then(success(res, 201))
.catch(next)
}
// function in user model file
view (full) {
let view = {}
let fields = ['id', 'name', 'picture']
if (full) {
fields = [...fields, 'email', 'createdAt']
}
fields.forEach((field) => {
view[field] = this[field]
})
return view
}
Вот моя функция, добавленная в пользовательскую модель
getExtraData (userView) {
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
axios.post( userView.host, querystring.stringify( {
data1:userView.data1,
data2:userView.data2
}))
.then((response) => {
return response.data
})
.catch((error) => {
console.log('Error', error)
return null
})
}
Как лучше всего заставить ответ ждать, пока extraData не будет возвращен из функции getExtraData с заданным кодом? Спасибо