Итак, в основном я пытаюсь создать обработчик ошибок, передавая значение ошибки, которое в моем случае представляет собой число для кода состояния, например 400, 500 и т. Д. Теперь проблема в том, когда catch
перехватывает ошибку, котораясодержит значение кода состояния, возвращенного из предыдущего обещания.Когда я записываю значение, оно записывает значение правильно, но когда я отклоняю его и передаю значение, чтобы оно было поймано в catch
следующего обещания, оно говорит, что значение не определено.
Вот ошибкакод:
UnhandledPromiseRejectionWarning: RangeError [ERR_HTTP_INVALID_STATUS_CODE]: недопустимый код состояния: не определено
JS:
const findFromModel = async (model, query) => {
return new Promise((resolve, reject) => {
model = model instanceof Object ? model : {};
if (model) {
model.findOne(query, (err, obj) => {
if (obj) {
resolve(obj);
} else {
reject(400);
}
});
} else {
reject(400);
}
});
}
const makeOrder = async (title, body, userQuery) => {
return new Promise((resolve, reject) => {
title = (typeof title === 'string' && title.length > 0) ? title : '';
body = (typeof body === 'string' && body.length > 0) ? body : '';
if (title && body) {
findFromModel(userModel, userQuery)
.then(user => resolve(user))
.catch(err => {
console.log(err); // logs 400
reject(err); // Undefined
});
} else {
reject(400);
}
});
}
Выполнить обещание:
1015 *
Я просто перехожу с es5 на es6, поэтому, если у вас появятся какие-нибудь более совершенные идеи по улучшению моего кода, это будет чрезвычайно оценено.