私は次のことを達成しようとしています(非常に基本的なものであり、些細なことを見逃しているに違いありません):
- select ステートメントを含む文字列で関数を呼び出す
- DB 呼び出しが完了し、行 (または json に相当するもの) が返されるまで待ちます
- http オブジェクトを設定して戻します
コードは次のとおりです。
util.js
exports.execute = function( query){
if (connection) {
connection.query(query, function(err, rows, fields) {
if (err) throw err;
console.log("from Util - " + JSON.stringify(rows));
return JSON.stringify(rows);
});
}
};
repo.js
var q = "select * from xxx";
var response;
util.execute(q, function (err, r){
if (err){
throw err;
console.log(err);
}
else {
console.log(r);
res.contentType('application/json');
res.write(r);
res.end();
}
});
私の問題は、util.js 内のコードが呼び出され、コンソールで json が表示されている間、repo.js の匿名コールバック関数に戻ってこないことです。
ここで何が間違っていますか?
アップデート
ありがとうベン私も同じ行で解決策を見つけました...ここに新しいコードがあります:
repo.js:
var send_data = function (req, res, r){
res.contentType('application/json');
res.write(r);
res.end();
}
exports.all = function(req, res){
var q = "select * from XXX";
var response;
util.execute(req, res,q, send_data);
};
util.js:
exports.execute = function(req, res, query, callback){
if (connection) {
connection.query(query, function(err, rows, fields) {
if (err) throw err;
callback(req, res, JSON.stringify(rows)) ;
});
}
};