如何从节点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.
答案 0 :(得分:3)
嗯,正如您可以看到here,query()
可以与这些参数一起使用:
你正在使用第二个。
回调函数仅在查询完成时才有效(这意味着可能需要一些时间)。
Javascript不会停留在您的查询上并继续使用脚本(console.log(outer);
),当您的查询完成后,它会应用回调函数并更改outer
。