2016-08-18 6 views
0

Ich habe eine Funktion, die wie folgt lautet:Lesen SQL-Abfrageergebnisse in Variable in js

function getNEO(state, callback) { 
    var conString = "postgres://alexa:[email protected]:5439/alexa"; 

    var client = new pg.Client(conString); 
    client.connect(); 
    var data = ''; 
    var query = client.query("SELECT avg(Math) as math, avg(Reading) as reading FROM sat_scores WHERE State = '" + state + "'"); 
    console.log("query is: %s", query); 
    query.on('row', function(row) { 
      console.log("Row cnt is: %s", row.math); 
      console.log("row is: " + row) 
      data += row; 
     }); 
    console.log("made it"); 
    query.on('end', function() { 
    callback(data); 
     }); 
} 

und es dann wie folgt aufrufen:

getNEO(st, function(results){ 

    console.log("results: " + results); 

    speechOutput = "There are " + results.math + " objects near the earth. "; 

    callback(sessionAttributes, 
     buildSpeechletResponse(cardTitle, speechOutput, repromptText, shouldEndSession)); 
    }); 

aber die Ergebnisse kommen zurück als undefined. ..wie schreibe ich die Ergebnisse richtig in den Satz zurück?

Antwort

0

Sie den Umgang mit den Ergebnisse als String in den Rückruf, wo Sie die Daten sammeln, indem + = verwenden.

Und dann Zugriff auf Ergebnisse, wie es ein Objekt sein sollte.

Vielleicht Ergebnisse es ist ein Array von Zeilen-Objekte, so dass Sie jede Zeile von verketten sollten:

var data = []; 
// ... code cut... 
data.push(row); 

Und die results.math sollte Ergebnisse [0] .math sein.

+0

also ersetze ich 'data + = row' mit' data.push (row); '? – user2061886

+0

Ja, aber ändern Sie die * Daten * Initialisierung wie in meinem Beitrag zuerst. Und versuchen Sie später auf das Array-Element zuzugreifen. –