Я пытаюсь представить сценарий проверки формы как router.post
, так и router.get
в router.use
. Я получаю данные из полей ввода с req.body.value
. Это работает в router.post
, но не в router.use
. Я получаю следующее сообщение об ошибке (TypeError: Cannot read property 'length' of undefined
) для этого кода:Экспресс: Почему нельзя использовать req.body.value в router.use?
router.use('/', (req, res, next) => {
if(req.body.firstname.length === 0 || !req.body.firstname.match(/\D+/igm)) {
var validateFirstname = false;
} else {
var validateFirstname = true;
};
if(validateFirstname === true) {
console.log('SUCCESS: Form validated!');
} else {
console.log('ERROR: Form not validated!');
};
next();
});
Кто-то может мне объяснить, почему это? Невозможно реализовать этот оператор if else
в router.use
? Позже это станет огромной помощью для отправки html div обратно пользователю, когда форма проверена внутри router.get
.
UPDATE:
Проблема с моей проверки, что это проверка формы после нагрузки, когда они пусты, поэтому возвращение undefined
. Но req.body
работает без проблем в router.use
при заполнении данными. Есть ли способ проверить поля ввода, кроме загрузки страницы?
Вы используете синтаксический анализ промежуточного программного обеспечения, такого как body-parser, прежде чем использовать эту функцию промежуточного программного обеспечения? – kinakuta
Да, не в этом роутере, а в моем 'app.js', с' extended: true' и 'json()'. – Lanti
Запросы GET не имеют тела, только POST, поэтому используйте '.post', если необходимо – dandavis