【发布时间】:2021-07-09 00:19:17
【问题描述】:
我正在处理表单验证,我正在尝试循环我的模板中的错误,但我不断收到错误。
在我的帖子路线中我有这个
router.post('/create', async (req, res)=>{
try{
var errors = [];
if(!req.body.title){
errors.push({message: 'Please Add a Title'})
}
if(errors.length > 0){
res.render('admin/posts/create',{errors: errors})
} else{
let filename = 'Nissan.jpeg';
if(!isEmpty(req.files)){
const file = req.files.file
filename = Date.now() + '-' + file.name
file.mv('./public/uploads/' + filename, (err)=>{
if(err) throw err
})
}
let allowComments = true;
if(req.body.allowComments){
allowComments = true;
} else{
allowComments = false;
}
const newPost = await new Post({
title: req.body.title,
status: req.body.status,
allowComments: allowComments,
body: req.body.body,
file: filename
});
const savedPost = await newPost.save();
// console.log(savedPost);
res.redirect('/admin/posts');
}
} catch (error){
console.log(error);
}
});
在我的带有 url (admin/posts/create) 的 ejs 模板中,我有这个
<% errors.forEach(errors => { %>
<%-errors.message %>
<% }) %>
但我的浏览器中不断收到此错误消息
ReferenceError: /blog/views/admin/posts/create.ejs:2
1| <%- include('../admin-partials/head') %>
>> 2| <% errors.forEach(error => { %> <%-error.message %> <% }) %>
3| <div class="dashboard-col-2">
4| <h1>Create Post</h1>
5|
errors is not defined
我该如何解决这个错误信息?
当我执行 console.log(errors) 时,我得到了这个
[{ message: 'Please Add a Title' } ]
【问题讨论】:
-
如果errors.length === 0,你是否将错误传递给res.render?
-
@AtharvaSharma 是的,我将它传递给 res.render
-
尝试如下替换循环: { %>
-
请分享您的完整代码
-
另外,请改为编辑问题,您不必在 cmets 中重复发布代码。谢谢!