2016-12-16 140 views
-1

我試圖從數據庫中返回一些行,連接工作正常,但是當快速調用檢索數據的函數時,它並不等待響應。快遞節點

我已經嘗試了很多方法來編寫回調無濟於事,我甚至嘗試過使用異步(請參閱下面的代碼),並且它仍然在數據甚至到達之前一直運行到最後。任何幫助?

router.get('/db/selectAllReadings', function(req, res) { 
    async.waterfall([ 
    function(next){ 
     console.log('function 1'); 
     var rows = dbFunctions.selectAllReadings(); 
     next(rows); 
    }, 
    function(next, rows){ 
     console.log('function 2'); 
     console.log(rows); 
     next(rows); 
    }, 
    function(next, rows){ 
     console.log('function 3'); 
     res.json(rows); 
    } 
    ]); 
}); 
+0

哪個函數從數據庫中獲取數據。 –

+0

@ravishankar var rows = dbFunctions.selectAllReadings(); –

回答

-1
router.get('/db/selectAllReadings', function(req, res) { 
    async.waterfall([ 
    function(next){ 
     console.log('function 1'); 
     dbFunctions.selectAllReadings(function(err,data){ 
     if(err){ 
     }else{ 
      var rows = data; 
      next(rows); 
     } 
     }); 

    }, 
    function(next, rows){ 
     console.log('function 2'); 
     console.log(rows); 
     next(rows); 
    }, 
    function(next, rows){ 
     console.log('function 3'); 
     res.json(rows); 
    } 
    ]); 
}); 

//need to do little bit change in your dbFunction 

if (err) { 
      callback(err,null); 
     } 
     else if (data.length > 0) { 
      callback(null,data); 
     } 

我希望你會得到它的一個更好的想法..

+0

儘管你的回答並不完美,但它能幫助我更好地理解事情,並最終讓它工作,謝謝 –

0

我終於它的工作,感謝@imran汗幫我看東西更清楚。

router.get('/db/selectAllReadings', function(req, res) { 
    dbFunctions.selectAllReadings(function(rows){ 
    res.json(rows); 
    }); 
});