问题描述
我正在尝试使用快速验证器和 ejs 方法设置数组验证,但我不断收到错误消息
C:\Users\ADLIMITED\Desktop\favourite\node_modules\express-validator\src\chain\validators-impl.js:25
this.lastValidator.message = message;
^
TypeError: Cannot set property 'message' of undefined
at ValidatorsImpl.withMessage (C:\Users\ADLIMITED\Desktop\favourite\node_modules\express-validator\src\chain\validators-impl.js:25:36)
at module.exports (C:\Users\ADLIMITED\Desktop\favourite\routes\index.js:35:33)
这是包含验证方法的数组:
router.post(
'/contact',[
check('name').trim().isLength({ min: 3 }).escape().withMessage('A name is required'),check('email').trim().isEmail().normalizeEmail().withMessage('A valid email is required'),check('service').escape().withMessage('Select a service'),check('budget').escape().withMessage('Choose a budget'),check('message').trim().isLength({ min: 3 }).escape().withMessage('Leave us a message'),],(req,res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
req.session.FeedbackContact = {
errors: errors.array(),};
return res.redirect('/contact');
}
console.log(req.body);
return res.send('Feedback form posted');
}
);
<div class="container-content100">
<div class="content-wrapper100">
<% if(locals.errors) {%>
<div class="alert alert-danger">
<% errors.forEach(function(error){ %>
<li><% error.msg %></li>
<% }) %>
</div>
<% } %>
<form class="" method="POST" action="/contact">
请帮忙
解决方法
我发现我的错误是将 .withMessage 分配给选项输入,而 ejs 页面的目的是在列表元素中包含分配符号,否则消息不会显示。 正确的代码如下所示:
包含验证方法的数组:
'/contact',[
check('name').trim().isLength({ min: 3 }).escape().withMessage('A name is required'),check('email').trim().isEmail().normalizeEmail().withMessage('A valid email is required'),check('service').escape(),check('budget').escape(),check('message').trim().isLength({ min: 3 }).escape().withMessage('Leave us a message'),],
包含要验证的详细信息以及错误消息的 html 页面
<div class="container-content100">
<div class="content-wrapper100">
<% if(locals.errors) {%>
<div class="alert alert-danger">
<% errors.forEach(function(error){ %>
<li><%= error.msg %></li>
<% }) %>
</div>
<% } %>
<form class="" method="POST" action="/contact">