Étant donné que node.js est non bloquant et asynchrone, alors dans ce code :
client.query("SELECT * FROM users", function (error, results, fields) {
if (error) {
//
}
if (results.length > 0) {
self.users = results;
}
});
console.log(this.users);
les données de la base de données ne sont probablement pas encore chargées dans la variable users lorsque vous essayez de la connecter à la console. Vous pouvez le vérifier si vous faites votre console.log
opération dans la requête, par exemple :
client.query("SELECT * FROM users", function (error, results, fields) {
if (error) {
//
}
if (results.length > 0) {
console.log(results);
}
});
Pour transmettre le résultat dans une variable lorsque l'opération est terminée, vous pouvez encapsuler votre appel de base de données client dans une fonction avec un paramètre de rappel et définir votre variable lorsque le rappel est invoqué, par exemple :
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);
});
Le code ci-dessus n'est qu'un concept.