我有以下代码。我对nodejs& js
相对较新我想在1. log中获取值但是我得到了未定义。 只有2.日志输出到日志。
我读过nodeJS return value from callback和 https://github.com/felixge/node-mysql但是没有关于返回值的示例。
我不知道如何在node-mysql页面中使用给定示例的return语句。
exports.location_internal = function (req, res) { var r = getExternalLocation(2); // 1. log console.log(r); res.send( r); } var getExternalLocation = function (id) { pool.getConnection(function(err, connection){ if(err) throw err; var response = {}; connection.query( "select * from external_geo_units where geo_unit_id = "+id, function(err, rows){ if(err) throw err; response.data= rows; // 2. log console.log(response); return response; }); connection.release(); }); };
答案 0 :(得分:5)
它是异步的,所以你必须传入一个回调来获取它准备好的值。例如:
exports.location_internal = function(req, res, next) {
getExternalLocation(2, function(err, rows) {
if (err)
return next(err);
console.log(rows);
res.send(rows);
});
};
function getExternalLocation(id, cb) {
pool.getConnection(function(err, conn) {
if (err)
return cb(err);
conn.query("select * from external_geo_units where geo_unit_id = ?",
[id],
function(err, rows) {
conn.release();
cb(err, rows);
});
});
}