2014-04-19 65 views
2

我有以下代码。我是相对新nodejs & jsNodejs与Mysql数据库返回值

我想获得值在1日志,但我得到未定义。 只有2.日志输出到日志。

我看过nodeJS return value from callbackhttps://github.com/felixge/node-mysql但是没有关于返回值的例子。

我不知道如何使用return语句与node-mysql页面中的给定示例。

 
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(); 
    }); 

}; 

回答

4

它是异步的,所以你必须传递一个回调才能获得它准备好的值。例如:

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); 
    }); 
    }); 
} 
+1

工程出色!谢谢 –