2017-02-28 21 views
0

route.jsUndefinded錯誤

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

我不知道爲什麼我收到的undefined當我在上面position.If做console.log()我做console.log()req.session.resultArray=resultArray那麼,我們所得到的只是後結果數組。

我想在我的view.ejs中顯示此resultArray。任何人都可以建議我如何解決它。我錯過了什麼?

+0

可能重複[如何返回來自異步調用的響應?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-呼叫) –

回答

0

console.log在異步函數實際從數據庫獲取細節之前運行。所以你不明白。 在回調中進行渲染。即將結果數組分配給會話之後。

router.get('/restful', (req, res, next) { 
     User.show_deatils(req, res, function(err, resultArray) { 
      if(!err) { 
       req.session.resultArray=resultArray; 
       return res.render('restful' {resultArray:req.session.resultArray})); 
      } 
     }); 
}); 
+0

如果我在會話 – riza

+0

後指定了頁面,則不允許加載頁面?您是在會話後指什麼意思。這裏的基本思想是,當你進入頁面時,服務器從數據庫中獲取細節信息,然後,'resultArray'將被分配給'req.session'變量,並且只有在該變量之後,該函數纔會返回resultArray。 – Gnanesh

+0

我不知道爲什麼這是不允許加載頁面。如果(!err){(erq,res),function(err,resultArray)){(err,resultArray){0} req.session.resultArray = resultArray; 的console.log(req.session.resultArray); } }); res.render( '寧靜',{resultArray:req.session.resultArray}) ; }); 這允許導航到restful頁面。但resultArray的值變成「未定義」。我在哪裏做錯了?無法找到它。 – riza

0

只要做到這樣

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

      res.render('restful',{resultArray:resultArray}); 
      } 
      }); 
     }); 

我想這是你想要的。

+0

我試過dis.Its不導航到寧靜的網頁本身。 – riza