Ваше предположение неверно по поводу res.send()
взлома, он сделает это только если вы return
. Вызовите return
на res.send()
в случае ошибки, чтобы она не продолжалась. Если вы получите сообщение об ошибке, он установит статус 400 (в заголовке), затем ошибка в теле, но, поскольку он не возвращает, он пытается установить статус 200 (в заголовке), вызывая ошибку видя.
// save the team and check for errors
team.save(function (err) {
if (err) {
// return here so that it will not continue!
return res.status(400).send(err);
}
// return here if there is no error!
return res.status(200).json({
message: 'Team successfully created',
team: team
});
});
Экспресс связывает промежуточное ПО вместе, используя function(req, res, next)
, и можно возвращать результаты через res.send()
в нескольких промежуточных программах. Следующее промежуточное программное обеспечение в цепочке вызывается, когда вы return next()
, поэтому, если вы хотите вернуть дополнительные данные в другое промежуточное программное обеспечение, например, при успешном выполнении, не будет return res.send()
, а вместо этого вызовите return next()
после res.send()
.