Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 快速验证器;ejs中未定义错误变量_Javascript_Node.js_Express_Ejs - Fatal编程技术网

Javascript 快速验证器;ejs中未定义错误变量

Javascript 快速验证器;ejs中未定义错误变量,javascript,node.js,express,ejs,Javascript,Node.js,Express,Ejs,我有一个问题,我一直在努力解决一段时间了,希望有人能给我指出正确的方向 我在res.render{}对象中传递的变量(错误)在布局文件中不可用。该问题记录为引用错误 如果我取出ejs代码,我的错误会正确地记录到终端上;我只是无法在布局文件中使用它 以下是layout.ejs代码的一部分 <% for(var i = 0; i < errors.length - 1; i++){ %> <li> <%= errors[i] %> </li>

我有一个问题,我一直在努力解决一段时间了,希望有人能给我指出正确的方向

我在res.render{}对象中传递的变量(错误)在布局文件中不可用。该问题记录为引用错误

如果我取出ejs代码,我的错误会正确地记录到终端上;我只是无法在布局文件中使用它

以下是layout.ejs代码的一部分

<% for(var i = 0; i < errors.length - 1; i++){ %>
  <li> <%= errors[i] %> </li>
<% } %>

  • 和后

    //POST route
    app.post('/articles/add', function(req, res){
    
      req.assert('title', 'Enter title').notEmpty();
      req.assert('author', 'Enter author').notEmpty();
      req.assert('body', 'Enter an article').notEmpty();
    
      //get errors
      req.getValidationResult().then(function(err){
    
    
        if(err.isEmpty()){
          console.log(err);
          res.render('add_article',{
            title: 'Add Article',
            errors: err // <-
          });
        }
    
        else {
    
          let article = new Article();
          article.title = req.body.title;
          article.author = req.body.author;
          article.body = req.body.body;
          article.save(function(e){
            if(e) {console.log(e)}
            else{
              req.flash('success', 'Article Added');
              res.redirect('/');
    
            }
          });
        }
    
      });
    
    //POST路由
    app.post('/articles/add',函数(req,res){
    request.assert('title','Enter title').notEmpty();
    request.assert('author','Enter author').notEmpty();
    req.assert('body','enteraarticle').notEmpty();
    //出错
    req.getValidationResult().then(函数(err){
    if(err.isEmpty()){
    控制台日志(err);
    res.render('添加文章'{
    标题:“添加文章”,
    
    错误:err/据我所知,您的代码中有两个错误。首先,
    if(err.isEmpty())
    ,当err为空时,您试图发送err!!另一个是使用
    req.getValidationResult()
    ,它将使用result
    对象
    而不是
    数组
    来解决问题。下面是可能有用的代码

    //POST route
    app.post('/articles/add', function(req, res){
    
      req.assert('title', 'Enter title').notEmpty();
      req.assert('author', 'Enter author').notEmpty();
      req.assert('body', 'Enter an article').notEmpty();
    
      //get errors
      req.getValidationResult().then(function(result){
    
    
        if(!err.isEmpty()){
          console.log(err);
          res.render('add_article',{
            title: 'Add Article',
            errors: result.array() // <-
          });
        }
    
        else {
    
          let article = new Article();
          article.title = req.body.title;
          article.author = req.body.author;
          article.body = req.body.body;
          article.save(function(e){
            if(e) {console.log(e)}
            else{
              req.flash('success', 'Article Added');
              res.redirect('/');
    
            }
         });
        }
    
    });
    
    [
       {param: "email", msg: "required", value: "<received input>"},
       {param: "email", msg: "valid email required", value: "<received input>"},
       {param: "password", msg: "6 to 20 characters required", value: "<received input>"}
    ]