Eftersom node.js är icke-blockerande och asynkron, så i denna kod:
client.query("SELECT * FROM users", function (error, results, fields) {
if (error) {
//
}
if (results.length > 0) {
self.users = results;
}
});
console.log(this.users);
data från DB är förmodligen inte laddade ännu i användarvariabeln när du försöker logga in den i konsolen. Du kan kolla upp det om du gör din console.log
operation i frågan, till exempel:
client.query("SELECT * FROM users", function (error, results, fields) {
if (error) {
//
}
if (results.length > 0) {
console.log(results);
}
});
För att skicka resultatet till en variabel när operationen är klar kan du lägga in ditt klient-DB-anrop till en funktion med callback-parameter och ställa in din variabel när callback anropas, till exempel:
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);
});
Ovanstående kod är bara ett begrepp.