0
これはNodeJSの私の最初の課題です。私はすべてのコールバックと非同期のもので少し失われていると思います。MySQLとエクスプレスサーバを同期する
私はエクスプレスを使用してサーバーを持っており、要求の1つがDBに照会して結果を返すことを望んでいます。
他の言語であれば、そのようにして値を返す関数を書くとすべてが良好になります。
ためqueryDB
機能の
function queryDB(daysAgo){
var connection = mysql.createConnection({
host: "dbadress.com",
user: "dbuser",
password: "dbpassword",
database: "db"
});
var returnValue;
sqlQuery = "select * from db.database where time_created > now() - interval " + daysAgo + " day"
connection.query(sqlQuery, function(error, results, fields){
if (error) throw error;
returnValue= results[0];
});
return returnValue;
}
app.get('/', function (req, res){
var daysAgo = req.query.days_ago;
var returnValue = queryMICE(daysAgo);
res.send("Days Ago: '+ daysAgo + '\nTargeted URL: ' + returnValue);
});
そしてもちろんリターンundefined
のものが同期していないです: 私のコードは、そのように見えます。
NodeJSのコールバックについての簡単な紹介と、クエリ値を返すためにこれをどのように書くべきでしょうか。
ありがとうございます!サイドノートとして
function queryDB(daysAgo, callback) {
var connection = mysql.createConnection({
host: "dbadress.com",
user: "dbuser",
password: "dbpassword",
database: "db"
});
sqlQuery = "select * from db.database where time_created > now() - interval " + daysAgo + " day";
connection.query(sqlQuery, function (error, results, fields) {
if (error) {
throw error;
}
callback(results[0]);
});
}
app.get('/', function (req, res) {
var daysAgo = req.query.days_ago;
queryDB(daysAgo, returnValue => res.send("Days Ago: " + daysAgo + '\nTargeted URL: ' + returnValue));
});
:代わりにあなたのqueryDBが値を返すたの
この行の 'queryMICE(daysAgo、returnValue => res.send(" Days Ago: '+ daysAgo +' \ nターゲットURL: '+ returnValue)); '' => ' ? – Dan
これは矢印の機能ですが、次のように書くこともできます: 'queryMICE(daysAgo、function(returnValue){res days(" DaysAgo: "+ daysAgo + '\ nTargeted URL:' + returnValue);}) ; ' –
ありがとう!' daysAgo'はまだ関数のスコープ内にありますか? – Dan