【发布时间】:2015-10-24 20:16:51
【问题描述】:
我有一个用 nodejs + express 做的小项目,我还做了一个小服务,可以在它的一些页面上共享。
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : 100,
host : 'host',
user : 'user',
password : 'password',
database : 'database',
debug : false
});
function executeQuery(query, callback) {
pool.getConnection(function (err, connection) {
if (err) {
return callback(err, null);
}
else if (connection) {
connection.query(query, function (err, rows, fields) {
connection.release();
if (err) {
return callback(err, null);
}
return callback(null, rows);
})
}
else {
return callback("No connection", null);
}
});
}
function getResult(query) {
return executeQuery(query, function (err, rows) {
if (!err) {
return rows;
}
else {
console.log(err);
}
});
}
function getServers()
{
var list = getResult("select * from table");
return list;
}
exports.getList = getList;
现在,我的问题是:当我调用 module.GetServers();从另一个模块,结果总是未定义,因为 pool.getConnection 是异步的(我想,我很新)所以 executeQuery 没有结果。 如何强制 executeQuery 等待 connection.query 产生结果?
【问题讨论】:
-
请注意所有 nodejs 方法如何将回调函数作为参数 - 您需要在 getServers 函数中执行相同操作。然后,当您从查询中取回行时,调用回调,将行作为参数传递。
标签: mysql node.js asynchronous