2017-03-01 4 views
0
// 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)。しかし、最初にページにリダイレクトするときに問題が発生します。値が表示されませんしかし、同じページをクリックすると詳細が表示されます。最初の読み込みでは、値をセッションに保存していないと感じます。この問題を解決するにはどうすればよいですか?あなたのようにコードを変更し 非同期コールバック関数の外でレンダリングされているためであるroute.jsからのビューのデータの表示

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

一部が機能していますが、初めて以来、あなたは外でレンダリングされ、セッションに正しい保存され非同期コールバックでは、値はありません。

+0

ありがとうございました。最終的には – riza

+0

が機能しました。非同期機能の仕組みを理解していただければ幸いです。 –

関連する問題