【问题标题】:Using Each Loop in EJS Template and Express JS在 EJS 模板和 Express JS 中使用每个循环
【发布时间】: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 中重复发布代码。谢谢!

标签: node.js express ejs


【解决方案1】:
if(errors.length > 0){
            res.render('admin/posts/create',{errors: errors})

只有&gt; 0 才会呈现错误,否则它是未定义的。

【讨论】:

  • 那么我还需要在我的 ejs 模板中添加 if 语句吗?
  • 这是一种方式。或者完全删除 if 语句并在没有错误时发送一个空数组。
  • 我该怎么做?因为我对表达和ejs还是新手
猜你喜欢
  • 2012-06-12
  • 1970-01-01
  • 2021-04-27
  • 1970-01-01
  • 2020-08-01
  • 2015-02-21
  • 2023-03-21
  • 2013-04-15
  • 2012-08-11
相关资源
最近更新 更多