использование nodejs express next - PullRequest
       4

использование nodejs express next

0 голосов
/ 06 февраля 2019

У меня есть API для работы с пост-запросом следующим образом (упрощенно):

myFunc(req: express.Request, res: express.Response, next){
    let err = 'err detected!';
    //validateSometing() returns a boolean value, true if validation pass false otherwise
    if(!validateSomething()){
       res.status(500).json(err);
       return next(err);
    }  
    //more code...logic if validation pass
}

Я хотел бы знать, требуется ли return next(err); или return; для остановки потока функций после отправки статусаи связал ошибку с клиентом.Другими словами, res.status(500).json(err); останавливает поток функций?

Спасибо!

1 Ответ

0 голосов
/ 06 февраля 2019

next() - это функция промежуточного программного обеспечения в цикле запроса-ответа приложения.Вы должны вызвать next(), чтобы передать управление следующей функции промежуточного программного обеспечения.В противном случае запрос останется без ответа.

res.json(), res.send() - это экспресс-функция, используемая для отправки ответа клиентскому приложению.Другими словами, он использовал эти функции, используемые для построения вашего HTTP-отклика.

return возвращает ключевое слово из вашей функции, тем самым заканчивая ее выполнение.Это означает, что любые строки кода после того, как он не будет выполнен.

Примечание: И next(), и res.send() не остановят выполнение вашей функции.Если добавление return остановит выполнение функции после запуска обратного вызова.

Используйте return, чтобы обеспечить остановку выполнения после запуска обратного вызова.В некоторых случаях вы можете использовать res.send, а затем делать другие вещи.

Пример:

app.use((req, res, next) => {
  console.log('This is a middleware')
  next()
  console.log('This is first-half middleware')
})

app.use((req, res, next) => {
  console.log('This is second middleware')
  next()
})

app.use((req, res, next) => {
  console.log('This is third middleware')
  next()
})

Ваш вывод будет:

This is a middleware
This is second middleware
This is third middleware
This is first-half middleware

То есть, он выполняет код ниже next() после завершения всех функций промежуточного программного обеспечения.

Однако, если вы используете return next(), он сразу же выскочит обратный вызов и код ниже return next() в обратном вызове будет недоступен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...