首页 文章

express-ejs-layout有时候无法检测到传递参数

提问于
浏览
0

我正在渲染一个页面,我传递数据“userInfo”,但有时它渲染,有时它显示这个ReferenceError,不知道为什么?我的问题是,如果有任何错误,它根本不应该工作 . 我该如何解决?

<pre>  

    ReferenceError: /Users/user/Desktop/iSlamic/views/layout.ejs:77
       75|                     </li>
       76|                     
    >> 77|                          if(userInfo)
       78|                  <li class="dropdown">
       79|                         <a href="#" class="dropdown-toggle" data-toggle="dropdown">Motiur<b class="caret"></b></a>
       80|                         <ul class="dropdown-menu">

    userInfo is not defined
       at eval (eval at <anonymous> (/Users/user/Desktop/iSlamic/node_modules/ejs/lib/ejs.js:491:12), <anonymous>:11:10)
       at returnedFn (/Users/user/Desktop/iSlamic/node_modules/ejs/lib/ejs.js:520:17)
       at View.exports.renderFile [as engine] (/Users/user/Desktop/iSlamic/node_modules/ejs/lib/ejs.js:374:31)
       at View.render (/Users/user/Desktop/iSlamic/node_modules/express/lib/view.js:126:8)
       at tryRender (/Users/user/Desktop/iSlamic/node_modules/express/lib/application.js:639:10)
       at EventEmitter.render (/Users/user/Desktop/iSlamic/node_modules/express/lib/application.js:591:3)
       at ServerResponse.render (/Users/user/Desktop/iSlamic/node_modules/express/lib/response.js:961:7)
       at /Users/user/Desktop/iSlamic/node_modules/express-ejs-layouts/lib/express-layouts.js:108:14
       at View.exports.renderFile [as engine] (/Users/user/Desktop/iSlamic/node_modules/ejs/lib/ejs.js:379:10)
       at View.render (/Users/user/Desktop/iSlamic/node_modules/express/lib/view.js:126:8)
       at tryRender (/Users/user/Desktop/iSlamic/node_modules/express/lib/application.js:639:10)
       at EventEmitter.render (/Users/user/Desktop/iSlamic/node_modules/express/lib/application.js:591:3)
       at ServerResponse.render (/Users/user/Desktop/iSlamic/node_modules/express/lib/response.js:961:7)
       at ServerResponse.res.render (/Users/user/Desktop/iSlamic/node_modules/express-ejs-layouts/lib/express-layouts.js:77:12)
       at /Users/user/Desktop/iSlamic/app.js:97:7
       at Layer.handle_error (/Users/user/Desktop/iSlamic/node_modules/express/lib/router/layer.js:71:5)}

</pre>

 
 
 <%if(userInfo){%>
                 <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Motiur<b class="caret"></b></a>
                        <ul class="dropdown-menu">
                            <li>
                                <a href="/admin/insert">Insert</a>
                            </li>
                            <li>
                                <a href="/admin/update">Update</a>
                            </li>
                            <li>
                                <a href="/admin/delete">Delete</a>
                            </li>
                            <li>
                                <a  href="/logout">Logout</a> 
                            </li>
                        </ul>
                    </li>
                     <% }else{ %>  
                     <li>
                      <a  href="/admin/login">Login</a> 
                      </li>
                    <%}%>
          
 
 



My js file

<pre>

    router.get('/speaker/:name', function(req, res, next) {

      var video_Data;

      was.find({"name":req.params.name, "wasType":"video"}).sort({_id:-1}).limit(5).exec(function(err,videoDocs){

      if(err)
      {
        res.json(err)
              mongoose.connection.close();
      }
      else
      {

        video_Data = videoDocs;


      }
      });


    //var audioData;
    was.find({"name":req.params.name, "wasType":"audio"}).sort({_id:-1}).limit(5).exec(function(err,docs){
    if(err)
      {
              res.json(err);
              mongoose.connection.close();
      }
      else
      {
        if(video_Data==null&&docs==null)

         {
          res.json("Data does not exist");
         }else{
          res.render('video2', {"data":docs,"videoData": video_Data,"userInfo":req.session.admin});

         }

      }

      });
    });

I am passing boolean value via userInfo.

1 回答

  • 0

    我得到了答案 . @noisypixy你是对的我的video_Data没有正确填充 . 当我渲染视图时,有时视频数据无法获取 . 所以我现在改变了我的代码它按预期工作 .

    router.get('/speaker/:name', function(req, res, next) {
    
          var video_Data;
    
          was.find({"name":req.params.name, "wasType":"video"}).sort({_id:-1}).limit(5).exec(function(err,videoDocs){
    
          if(err)
          {
            res.json(err)
                  mongoose.connection.close();
          }
          else
          {
    
            video_Data = videoDocs;
    
            was.find({"name":req.params.name, "wasType":"audio"}).sort({_id:-1}).limit(5).exec(function(err,docs){
            if(err)
          {
                  res.json(err);
                  mongoose.connection.close();
          }
          else
          {
            if(video_Data==null&&docs==null)
    
             {
              res.json("Data does not exist");
             }else{
              res.render('video2', {"data":docs,"videoData": video_Data,"userInfo":req.session.admin});
    
             }
    
          }
    
          });
    
    
          }
          });
    
    
    
        });
    

相关问题