node.jsは非ブロッキングで非同期であるため、このコードでは次のようになります。
client.query("SELECT * FROM users", function (error, results, fields) {
if (error) {
//
}
if (results.length > 0) {
self.users = results;
}
});
console.log(this.users);
コンソールにログインしようとしているときに、DBからのデータがusers変数にまだロードされていない可能性があります。 console.log
を実行すると、チェックアウトできます。 クエリ内の操作(例:
client.query("SELECT * FROM users", function (error, results, fields) {
if (error) {
//
}
if (results.length > 0) {
console.log(results);
}
});
操作の終了時に結果を変数に渡すには、クライアントDB呼び出しをコールバックパラメーターを使用して関数にラップし、コールバックが呼び出されたときに変数を設定します。次に例を示します。
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);
});
上記のコードは単なる概念です。