Как использовать promises внутри экспресс-приложения?
Я пытаюсь использовать обещание внутри функции app.get, которое будет запускать запрос, который будет выполняться по обещанию. но проблема в том, что ответ не ждет обещания и просто отвечает.
любая идея, как код должен так обещать, может жить внутри app.get в экспресс-приложении?
Ответы
Ответ 1
app.get('/test', function (req, res) {
db.getData()
.then(function (data) {
res.setHeader('Content-Type', 'text/plain');
res.end(data);
})
.catch(function (e) {
res.status(500, {
error: e
});
});
});
Ответ 2
Вот ответ от Экспресс-документация:
app.get('/', function (req, res, next) {
// do some sync stuff
queryDb()
.then(function (data) {
// handle data
return makeCsv(data)
})
.then(function (csv) {
// handle csv
})
.catch(next)
})
app.use(function (err, req, res, next) {
// handle error
})
В основном это означает прохождение next
через .catch()
, так что общий маршрут обработки ошибок может инкапсулировать логику обработки ошибок ниже по течению.