Da node.js er ikke-blokerende og asynkron, så i denne kode:
client.query("SELECT * FROM users", function (error, results, fields) {
if (error) {
//
}
if (results.length > 0) {
self.users = results;
}
});
console.log(this.users);
data fra DB er sandsynligvis endnu ikke indlæst i brugervariablen, når du forsøger at logge den ind på konsollen. Du kan tjekke det ud, hvis du laver din console.log
handling i forespørgslen, for eksempel:
client.query("SELECT * FROM users", function (error, results, fields) {
if (error) {
//
}
if (results.length > 0) {
console.log(results);
}
});
For at overføre resultatet til en variabel, når operationen er færdig, kan du pakke dit klient-DB-kald ind i en funktion med tilbagekaldsparameter og indstille din variabel, når tilbagekaldet aktiveres, for eksempel:
function query(sql, callback) {
client.query(sql, function (error, results, fields) {
if (error) {
//
}
if (results.length > 0) {
callback(results);
}
});
}
query("SELECT * FROM users", function(results) {
self.users = results;
console.log(self.users);
});
Ovenstående kode er kun et koncept.