具有Mysql数据库返回值的Nodejs

时间:2014-04-19 19:44:49

标签: mysql node.js node-mysql

我有以下代码。我对nodejs& js

相对较新

我想在1. log中获取值但是我得到了未定义。 只有2.日志输出到日志。

我读过nodeJS return value from callbackhttps://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();
    });

};

1 个答案:

答案 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);
    });
  });
}