ノード 8.11.1 では、express 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());
常にTRUEなので、DBの空のフィールドに保存することになります。それで、express-validator はエラーをキャッチしませんか?
また、ルートでerrors
バックを渡す方法がわからないため、エラーがレンダリングされる可能性があります。これが、今のところ使用する理由です。成功の部分に likeを使用しますか?/
req.flash('err', 'errors');
req.flash
これをデバッグするのを手伝ってください。ありがとう