@KappyJS

Как передать обработчик Express?

Есть обработчик get
router.get('/', function(req, res, next) {
...Тут действия с бд 
next();
}


Далее я передаю обработчик на следующий уровень
router.get('/', function(req, res, next) {
...Тут следующие действия
next();
}


Но почему то промис не срабатывает, и сразу выполняется 2-ой блок, только потом 1-ый. Делаю так же как в документации, не помогает, все еще понемногу обучаюсь и вот тут встрял. Хочу в одном обработчике заполнить json, во втором передать .
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
shmatuan
@shmatuan
8 year of Web, 5 years of Vue
next(); должен в колбеке/then асинхронной функции вызываться

БД ещё не вернуло значения (только отправило), а next() уже сработал

router.get('/', function(req, res, next) {
  someaction({query}, (error, data) => { // тут от БД зависит, может быть через промисы
    if(data) next();
  })

}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@bagzon
Backend PHP, NodeJs, JS
Ну ты же внутри промиса вызываешь next()?
Ответ написан
Комментировать
router.get('/', async function(req, res, next) {
    try {
        await someaction(query);
        next();
    }
    catch(error){
        console.error(error);
    }
  })
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы