私はNode.jsの学習中ですが、どのようにしてmysqlクエリの結果をAPIレスポンスとして返すかについては固執しています。私が今までに読んだことから、約束を返して解決する必要があるように見えますが、私はどのようにデータを返すことができないのか分かりません。約束:応答を得る方法?
function get_free_count() {
return new Promise(function(resolve,reject) {
var sql = "SELECT COUNT(id) AS number FROM users";
conn.query(sql, function(err,result) {
if(err) return reject(err);
console.log(result[0].number);
resolve(result[0].number);
});
});
}
app.get('/users/free/count', function(req,res) {
var output;
output = get_free_count().then(res.json(output));
});
レスポンスポイントを解決して返信しています。私がthen()
関数の中でコールバック関数を作成した場合、範囲外であるためにresオブジェクトにアクセスすることはできません。これまでのところ、私はデータベース値を返す方法を見つけることができませんでした。私の無料カウントをAPIレスポンスとして返す方法は何ですか?
ありがとうございます。
は約束を自分で 'conn.query'をラップしていない約JavaScriptの作業で閉鎖が、あなたがより多くを読むことができる方法である、[あります。下記の例では何も問題はありませんそのためのライブラリ](https://www.npmjs.com/package/promise-mysql) – Kos
はい、 'then'コールには' then'コールが必要なので、 'then'コールでコールバック関数を作成してください。いいえ、コールバックが*クロージャ*であるため、 'res'は範囲外になりません。それを試してみてください! – Bergi