非同期プログラミングの作業を開始し、nodejs アプリケーションを作成し、いくつかのファイルにコードをスライスしました: index.js、ctlUser.js、DAO.js など... .. Index.js は必要なメイン ファイルです。 ctlUser と ctlUser には DAO.js が必要です... DAO はデータベースに接続し、クエリを実行します...
抽象化すると、私の構造は次のようになります...
Index.js
var ctlUser = require('./ctlUser.js');
var username = ctlUser.getUserName('1');
console.log("Return from ctlUser" + username);
ctlUser.js
var DAO = require('./DAO.js');
var getUserName = function(id){
var userName = DAO.executeQuery("SELECT username FROM tbUsers WHERE id = " + id );
console.log(Return from DAO = userName);
return username;
}
ここのDAO.jsはすべて問題ありません...
var mysql = require('mysql');
var executeQuery = function(query) {
var connection = mysql.createConnection({
host : SERVER,
user : USER,
password : PASSWORD,
database : DATABASE
});
connection.connect();
connection.query(query, function(err, rows, fields) {
if (err) throw err;
connection.end();
console.log("Here in DAO: " + rows[0].username);
return rows[0].username;
});
};
の出力$ node index.js
は次のとおりです。
Return of ctlUser: undefined
Return of DAO: undefined
Here in DAO: Filipe Tagliacozzi
すべてのモジュールのエクスポートを抽象化すると、固定変数では問題なく動作しますが、データベースの応答ではうまくいきません..この構造にコールバックを実装して、userName を index.js に渡すにはどうすればよいですか?