Вот переписывание с использованием обычного async/await
материала:
var data, results;
try {
data = await items.find({_id:id}).toArray();
}
catch (err) {
console.log(`${origin} ${error}`);
res.status(404).send('Not found');
}
try {
results = await uiCtrl.pagination(data, req.query);
}
catch (err) {
console.error(`pagination failed ${error}`);
res.status(500).send(`pagination failed ${error}`);
}
Следует отметить, что, учитывая тот факт, что я ничего не знаю о вашем коде, кроме того, что я вижу, возможно, есть и другието, что вы можете сделать, сделает код лучше читаемым и более легким в использовании (то есть отклонение обещания и выполнение с ним чего-то значимого вместо создания исключений).Вам также нужно будет обернуть весь этот код в метод async
, чтобы вы могли использовать ключевое слово await
.
РЕДАКТИРОВАТЬ
Для завершения, учитывая полноекод, который я сейчас начал бы, переписав его примерно так:
router.get('/:id', async (req, res, next) => {
const origin = 'routes/items.js GET /:id';
const id = req.params.id;
var itemResults, paginationResults;
try {
itemResults = await items.find({_id: id}).toArray();
}
catch (err) {
console.log(`${origin} ${error}`);
res.status(404).send('Not found');
}
try {
paginationResults = await uiCtrl.pagination(data, req.query);
res.status(200).send(result);
}
catch (err) {
console.error(`pagination failed ${error}`);
res.status(500).send(`pagination failed ${error}`);
}
});
Еще одна вещь, которую я бы сделал, как своего рода оптимизация или ведение домашнего хозяйства, состояла бы в том, чтобы переместить перехват ошибок в один блок catch
ипроанализируйте ошибку, чтобы сделать ее более краткой.
Также включите это, поскольку в нем говорится о чем-то, что называется callback hell
, что очень важно для информации, о которой вы спрашиваете.
http://callbackhell.com/