如何从节点mysql返回结果

时间:2012-03-21 11:44:30

标签: mysql node.js

如何从节点mysql返回结果 https://github.com/felixge/node-mysql 我正在尝试访问函数外部返回的结果。

var mysql = require('mysql');
var TEST_DATABASE = 'zenoir';
var TEST_TABLE = 'tbl_sessions';
var client = mysql.createClient({
  user: 'root',
  password: 'secret',
});

var outer = 20;
client.query('USE '+TEST_DATABASE);

client.query(
  'SELECT ses_title FROM '+TEST_TABLE,
  function selectCb(err, results, fields) {
    if (err) {
      throw err;
    }


    var boom  = results;
    var rooms = [];
    var index = 0;
    var name = 'session';

    for(var b in boom){
         rooms[b] = {};
         rooms[b][name + index] = boom[b]['ses_title'];
         index += 1;
    }

    var exe = {};
for(var mon in rooms){
 for(var zeb in rooms[mon]){
    exe[mon] = rooms[mon][zeb];
 }

}


    outer = exe; //I want to access the exe variable outside the function scope

    client.end();
  }
);

console.log(outer); //I still get the initial value 20 in here.

1 个答案:

答案 0 :(得分:3)

嗯,正如您可以看到herequery()可以与这些参数一起使用:

  • SQL查询,SQL查询参数,完成时回调
  • SQL查询,完成后回调

你正在使用第二个。

回调函数仅在查询完成时才有效(这意味着可能需要一些时间)。 Javascript不会停留在您的查询上并继续使用脚本(console.log(outer);),当您的查询完成后,它会应用回调函数并更改outer