0
Expressをリロード滞在し続ける:アラートも後
router.get('/polls/new', isLoggedIn, (req, res) => {
res.render('new', {title: 'Create a new poll', route: 'new', isLoggedIn: req.isAuthenticated(), errors: req.session.errors});
req.session.errors = null;
});
router.post('/polls', isLoggedIn, (req, res) => {
req.check('title', 'Title must contain atleast 10 characters and must not exceed 100 charcters').isLength({min: 10, max: 100});
var errors = req.validationErrors();
console.log(errors);
if (errors) {
req.session.errors = errors;
res.redirect('/polls/new');
}
EJS:
<% if (errors) { %>
<% errors.forEach((error) => { %>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<button type="button" class="close alert-dismissible" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<strong>Error!</strong> <%= error.msg %>
</div>
<% }); } %>
は、検証が失敗したときに警告メッセージを表示しようとしています。それは完璧に正常に動作します。しかし、ページが再ロードされると、エラーをnullにしてもアラートメッセージが表示されます。
:のように別の変数に
errors
の値を複製してみてください。私は驚くべきことは何も記録しないだろうが、テンプレートが実際に動いていることを確認するのに役立つだろう。私はあなたが何らかのキャッシュ問題を見ているのかどうか疑問に思っています。 EJSに '<%= Date.now()%>'のようなものを入れて、ブラウザにキャッシュされたコピーが見えないことを確認することもできます。 – skirtle