请记住,为了使查询并行运行,您必须利用连接池.在mysql连接上一次只能运行一个查询.有关示例,请参见
https://github.com/felixge/node-mysql/#pooling-connections.
Remyp的答案需要修改为以下内容:
var mysql = require('mysql');
var async = require('async');
var credentials = {connectionLimit: 10,...}
router.get('/api/url/', function (req, res) {
var pool = mysql.createPool(credentials);
var query1 = "SELECT column1 FROM table1 WHERE column2 = 'foo'";
var query2 = "SELECT column1 FROM table2 WHERE column2 = 'bar'";
var return_data = {};
async.parallel([
function(parallel_done) {
pool.query(query1, {}, function(err, results) {
if (err) return parallel_done(err);
return_data.table1 = results;
parallel_done();
});
},
function(parallel_done) {
pool.query(query2, {}, function(err, results) {
if (err) return parallel_done(err);
return_data.table2 = results;
parallel_done();
});
}
], function(err) {
if (err) console.log(err);
pool.end();
res.send(return_data);
});
});
我会评论他的帖子,但我没有代表这样做,所以发布作为答案.