В узле 8.11.1 экспресс 4.16.3 я установил
"express-messages" : "*",
"connect-flash" : "*",
"express-validator" : "*",
"express-session" : "*"
У меня есть страница, которая получает все статьи app.get('/', function(req, res){....
, а также имеет кнопку «Новая» для добавления новой статьи. При нажатии New появляется всплывающая форма Bootstrap.
Я хочу проверить наличие пустых полей формы. Поле формы HTML, которое я проверяю,
<input type="text" name="name" id="name" class="form-control" />
Действие формы переходит к
const { check, validationResult } = require('express-validator/check');
app.post('/add', [check('name').exists()],
function(req, res) {
const errors = validationResult(req);
console.log(errors.isEmpty());
if (!errors.isEmpty()) {
req.flash('err', 'errors'); //test
res.redirect('/');
}
else {
pool.connect(function(err, client, done) {
if (err) {
return console.log('db connect error '+ err);
}
client.query('insert into event (name) values($1)',
[req.body.name]);
done();
req.flash('success', 'saved');
res.redirect('/');
}); //pool connect
}//else
});
Я нахожусь в этом. Что бы я ни делал, console.log(errors.isEmpty());
всегда ИСТИНА, поэтому в итоге я сохраняю пустые поля в БД. Значит, экспресс-валидатор не ловит ошибки?
Кроме того, я не уверен, как передать errors
обратно в маршрут /
, чтобы ошибки могли быть отображены, поэтому я пока просто использую req.flash('err', 'errors');
. Я использую req.flash
как часть успеха?
Пожалуйста, помогите мне отладить это. Спасибо
console.log
дает{ isEmpty: [Function], array: [Function], mapped: [Function], formatWith: [Function], throw: [Function] }
- person codebot   schedule 09.05.2018