Aangezien node.js niet-blokkerend en asynchroon is, dan in deze code:
client.query("SELECT * FROM users", function (error, results, fields) {
if (error) {
//
}
if (results.length > 0) {
self.users = results;
}
});
console.log(this.users);
gegevens uit DB zijn waarschijnlijk nog niet geladen in de gebruikersvariabele wanneer u probeert in te loggen op de console. Je kunt het bekijken als je je console.log
. doet bewerking binnen de query, bijvoorbeeld:
client.query("SELECT * FROM users", function (error, results, fields) {
if (error) {
//
}
if (results.length > 0) {
console.log(results);
}
});
Om het resultaat in een variabele door te geven wanneer de bewerking is voltooid, kunt u uw client-DB-aanroep in een functie met callback-parameter inpakken en uw variabele instellen wanneer de callback wordt aangeroepen, bijvoorbeeld:
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);
});
Bovenstaande code is slechts een concept.