2016-12-16 5 views
-1

Ich versuche, einige Zeilen aus einer db, Verbindung funktioniert gut und alles zurück, aber wenn Express ruft die Funktion, die die Daten abruft es nicht auf die Antwort wartet.Express mit Knoten

Ich habe viele Möglichkeiten versucht, um einen Rückruf ohne Erfolg zu schreiben, ich habe sogar versucht, async (siehe Code unten), und es läuft immer noch den ganzen Weg bis zum Ende, bevor die Daten überhaupt da sind. Irgendeine Hilfe?

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

Welche Funktion holt die Daten aus der Datenbank? –

+0

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

Antwort

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

i u hoffen, eine bessere Vorstellung davon bekommen ..

+0

Während Ihre Antwort nicht ganz funktioniert, hilft es mir, die Dinge besser zu verstehen und es schließlich zum Laufen zu bringen, danke –

0

ich es endlich geschafft, es dank @imran khan zu arbeiten, für die Hilfe die Dinge klarer sehen.

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