router.post("/signup", (req, res, next) => {
res.send(req.body);
registration
.registration(req.body)
.then(ok => {
res.redirect("signin");
})
.catch(err => {
res.render("error", { message: err });
});
});
Объект res
представляет ответ HTTP, который приложение Express отправляет, когда оно получает запрос HTTP. В следующей ссылке вы можете увидеть все методы, доступные для объекта res
: https://expressjs.com/en/api.html#res
Метод, который вы используете в начале вашего обработчика маршрута:
res.send ([body])
И, как видно из документации, он отправляет HTTP-ответ. Теперь вы можете отправить этот ответ только один раз, в противном случае вы получите сообщение об ошибке:
Error : Cannot set headers after they are sent to the client
И что вы пытаетесь сделать в обработчике, это перенаправить результат на страницу «входа», после которой уже отправляете ответ с res.send(req.body)
.
Возьмите этот поддельный маршрут для примера:
router.post("/example", (req, res, next) => {
res.send('1');
res.send('2');
res.send('3');
});
Вопреки тому, что вы могли бы поверить, он не вернет значения (1,2,3), но фактически вернет значение 1 и повышение и ошибка, которая была ранее описана.
Наконец, чтобы решить вашу проблему, вам нужно удалить строку, содержащую res.send(req.body)
, и дважды проверить, правильно ли обрабатывает registration.registration
служба предоставленных данных, в данном случае req.body
.