从route.js显示视图上的数据

时间:2017-03-01 07:22:57

标签: node.js express ejs

    // This is my router.js


    router.get('/restful', function(req, res){
    console.log("before");
      User.show_deatils(req, res, function(err, resultArray){
       if(!err){
        req.session.resultArray=resultArray;
        req.session.save();
      }
      });
      //console.log(req.session.resultArray)
     res.render('restful',{resultArray:req.session.resultArray});   
     });


    //This is model.js
    module.exports.show_deatils=function(req,res,callback){

      var resultArray=[];
      mongo.connect(url,function(err,db){
        assert.equal(null,err);
        var cursor=db.collection('users').find();
        cursor.forEach(function(doc,err){
          assert.equal(null,err);
          resultArray.push(doc);
        callback(null, resultArray); 


        });


    });

    }    

//我想在加载视图上显示resultArray(restful.ejs)。但问题是当我第一次重定向到页面时。它没有显示任何值。但是点击同一页面后它一直显示给我详细信息。我觉得第一次加载时它没有在会话中存储值。我们如何解决这个问题?我很长时间都在尝试。

1 个答案:

答案 0 :(得分:1)

这是因为您在异步回调函数之外进行渲染 像这样改变你的代码

 router.get('/restful', function(req, res){
    console.log("before");
      User.show_deatils(req, res, function(err, resultArray){
       if(!err){
        req.session.resultArray=resultArray;
        req.session.save();
        res.render('restful',{resultArray:req.session.resultArray});   

      }
      });
      //console.log(req.session.resultArray)
     });

它在会话中存储正确,该部分正在工作,但是自从第一次在异步回调之外渲染时,它没有任何值。