Protože node.js je neblokující a asynchronní, pak v tomto kódu:
client.query("SELECT * FROM users", function (error, results, fields) {
if (error) {
//
}
if (results.length > 0) {
self.users = results;
}
});
console.log(this.users);
data z DB se pravděpodobně ještě nenačtou do uživatelské proměnné, když se ji pokoušíte přihlásit do konzole. Můžete si to ověřit, pokud si uděláte console.log
operace v rámci dotazu, například:
client.query("SELECT * FROM users", function (error, results, fields) {
if (error) {
//
}
if (results.length > 0) {
console.log(results);
}
});
Chcete-li po dokončení operace předat výsledek do proměnné, můžete zabalit volání klientské databáze do funkce s parametrem zpětného volání a nastavit proměnnou, když je zpětné volání vyvoláno, například:
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);
});
Výše uvedený kód je pouze koncept.