2016-07-05 6 views
0

Ich versuche eine Variable innerhalb einer Verbindungsabfrage zu deklarieren, um sie zum Laufen zu bringen.Globale Variable in der MySQL-Abfrage deklarieren nodejs

var chk = cont.query("SELECT * FROM `points` WHERE name = '"+ usr +"'", function(rows) { 
    var row = rows; 
    res.send(row); 
}); 

console.log(row[0].amount); 

Es gibt diesen Fehler zurück: ReferenceError: row is not defined

Wie kann ich dies erfolgreich tun.

+0

Wenn Sie die Variable innerhalb der Funktion deklarieren, erwarten Sie nicht, dass sie außen im console.log() -Aufruf sichtbar ist. –

+0

Gibt es aber einen Weg, um die Funktion zu umgehen? – swagster

Antwort

0
var chk = cont.query("SELECT * FROM `points` WHERE name = '"+ usr +"'", function(rows) { 
    var row = rows; 
    console.log(row[0].amount) 
    res.send(row); 
}); 

Sie können nicht auf die Variable row außerhalb der Funktion zugreifen, für die sie deklariert ist. Und selbst wenn Sie global (außerhalb des Callbacks) row deklariert hätten, würde es nicht funktionieren, da der von Ihnen gepostete Code asynchron ausgeführt wird. Die Rückfrage-Callback-Funktion wird nach console.log(row[0].amount); von Ihrem Code ausgeführt, so dass Sie sowieso keine Zeilenreferenz hätten.

Offensichtlich, wenn das Code-Snippet, das Sie gepostet haben, Ihr vollständiger Code ist, müssen Sie die Variable row überhaupt nicht deklarieren.

+0

Also gibt es keine Möglichkeit, dies außerhalb der Abfrage zu bekommen? – swagster

+0

Ich bin mir nicht sicher, was Sie zu tun versuchen, wenn Sie Zeilen woanders referenzieren wollen, müssen Sie entweder Ihre eigenen Callback- und pass-Zeilen verwenden, implementieren Sie oben als Promise, das Zeilen zurückgibt und bearbeiten Sie es einmal habe die Daten oder schaue dir ein asynchrones Modul an, das Situationen behandelt, in denen weitere Logik von einem Callback-Ergebnis abhängig ist. – razakj

+0

Ich möchte die 'rows' Daten außerhalb der Abfrage verwenden. – swagster