【发布时间】:2019-01-04 04:38:05
【问题描述】:
我正在处理联系表单并使用 express-validator 进行验证。我正在尝试处理错误,这是迄今为止我在 app.js 文件中的代码(相关的 sn-p):
// CREATE (POST) ROUTE - add new prospect to the DB
app.post('/contact', [
check('firstName', 'Please enter at least one letter').not().isEmpty().trim().escape(),
check('lastName', 'Please enter at least one letter').not().isEmpty().trim().escape(),
check('emailAddress', 'Please enter a valid email address').isEmail().normalizeEmail(),
check('message', 'Please enter at least one letter').not().isEmpty().trim().escape()
], (req, res) => {
// GET AND SANITIZE DATA
var firstname = req.sanitize(req.body.firstName);
var lastname = req.sanitize(req.body.lastName);
var emailaddress = req.sanitize(req.body.emailAddress);
var message = req.sanitize(req.body.message);
var newProspect = { firstName: firstname, lastName: lastname, emailAddress: emailaddress, phoneNumber: phonenumber, message: message };
// HANDLE FORM VALIDATION ERRORS
const errors = validationResult(req);
if(!errors.isEmpty()) {
console.log(errors.array());
return res.status(422).render('contact-form', {
errorMessage: errors.array()[0].msg
});
}
为了将错误输出到浏览器,我的 contact-form.ejs 文件中包含以下内容,就在实际表单 div 的上方:
<% if(errorMessage) { %>
<div class="user-message user-message--error"><%= errorMessage %></div>
<% } %>
当我为联系表单加载路由时,我收到以下错误:
ReferenceError: /home/ubuntu/workspace/views/contact-form.ejs:13
11|<p class="lead">Fill out the form below and we will respond as soon as possible.
12|</p>
>> 13|<% if(errorMessage) { %>
14|<div class="user-message user-message--error"><%= errorMessage %></div>
15|<% } %>
16|<div class="form">
errorMessage is not defined
我知道我在这里遗漏了一些东西,但在我承认缺乏经验的情况下,这对我来说并不是那么明显。
也许更好地提出这个问题,在我的 contact-form.ejs 模板中有效且成功地使用我的 app.js 中的“errorMessage”变量有什么好处,这样我就不会收到“未定义”错误?
【问题讨论】:
-
我看到你已经在输出errors.array()。这向你展示了什么?看起来是否实际上(至少)有一个元素,并且该元素是一个带有
msg键的对象? -
实际上,如果没有contact-form.ejs 模板中的'if',我通过app.js 文件中的console.log 行成功获取了错误。但是在contact-form.ejs中添加了“if”,只需将联系表单加载到浏览器就会引发错误并停止服务器。
-
[ { location: 'body', param: 'firstName', value: '', msg: '请输入至少一个字母' }, { location: 'body', param: 'lastName ', value: '', msg: '请输入至少一个字母' }, { location: 'body', param: 'emailAddress', value: '', msg: '请输入有效的电子邮件地址' }, { location: 'body', param: 'message', value: '', msg: '请输入至少一个字母' } ]
标签: javascript express ejs express-validator