riza
riza

Reputation: 123

Display of data on view from route.js

    // 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); 


        });


    });

    }    

//I want to display the resultArray on loading view(restful.ejs).But the problem is when I first redirect to the page.It is not showing any value.But upon clicking the same page its been showing me the details.What I feel is on the first load it is not storing the values in session.How can we solve this issue?I am trying this for long time.

Upvotes: 0

Views: 84

Answers (1)

Sharjeel Ahmed
Sharjeel Ahmed

Reputation: 2061

That is because you are rendering outside the async callback function Change your code like this

 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)
     });

It is storing correct in the session, that part is working but since the first time you are rendering outside the async callback, it has no value.

Upvotes: 1

Related Questions