データベースからデータを取得してユーザーに返すのですが、mysqlクエリが非同期で動作するため、クエリコード、私は、クエリのコールバック関数内で応答を送信する必要があります。nodejs res.endがコールバックで動作しない
var express = require('express');
var fs = require('fs');
var mysql = require('mysql')
var app = express();
var con = mysql.createConnection({
host:"localhost",
user:"root",
password:"",
database:"tempdb"
})
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', 'http://localhost');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT,
PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-
type');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
app.get('/',function(req,res,next){
function foo(res){
con.query('SELECT * FROM `data` WHERE 1',function(err,result){
if (err) throw err;
res.end('weee',function(err){
if (err) throw err;
)}
})
}
foo(res)
next();
})
app.listen(1001)
も、このような単純なもので、データベースからデータが全く処理されるか、使用されていない場合、res.end機能は、任意のデータを送信しません。
私は、ウォーターフォールコールバックを使用して、res.endをクエリの外に置いて呼び出しても、何もうまくいかないように、多くのバリエーションを試しました。私はそれをクエリの外に置いたときにそれが動作する唯一の時間ですが、クエリが非同期であるため、そのようにデータを取得することはできません。これを回避する方法はありますか、私は何かが欠けていますか?
ありがとうございます!
あなたは人生の節約になりましたありがとう、私は決して自分自身を得たでしょう。多くの愛 –