在我的发布请求中,我在jade模板中传递了一些变量以显示一些表单验证错误,但是此后每次我向该页面发送get请求时,这些错误将再次显示! 这是我博客中的评论系统
router.get('/:id',function(req,res){
var id = req.params.id;
Post.findOne({_id:id},function(err,post){
if (err) throw err;
if (!post) res.sendStatus(404);
Comment.find({postId:id},function(err,comments){
res.render('post',{post:post,comments:comments});
});
});
});
router.post('/:id',function(req,res){
var id = req.params.id;
Post.findOne({_id:id},function(err,post){
if (err) throw err;
if (!post) res.sendStatus(404);
Comment.find({postId:id},function(err,comments){
email = req.body.email;
name=req.body.name;
commentBody=req.body.body;
//form validation
req.checkBody('name','title is empty').notEmpty();
req.checkBody('body','post body is empty').notEmpty();
req.checkBody('email','email is empty').notEmpty();
req.checkBody('email','please enter a valid email address').isEmail();
errors = req.validationErrors();
if (errors){
res.render('post', {errors:errors,post:post,comments:comments})
}
else{
newComment = new Comment({
name:name,
email:email,
body:commentBody,
postId:id,
date:Date.now()
});
newComment.save();
req.flash("success","Comment submitted successfully")
res.redirect('');
}
});
});
});
似乎在渲染它后不会清除“错误”变量。
相反,当我使用变量“ messages()”来显示我的即显消息时,相反,它将以某种方式消失!
例如,如果我在Jade模板中使用下面的代码,它将不会显示消息
if messages()
!{messages()}
似乎有点像if语句使用messages变量,但是如果我不使用if语句,它将很好地工作。
有必要使用if语句,因为我想在消息框中显示消息。