[英]Nodejs change global variable inside mysql query
i'm trying to create a nodejs server but the following code is not working any advice? 我正在尝试创建一个nodejs服务器,但是以下代码没有任何建议?
var app = require('http').createServer();
var io = require('socket.io')(app);
var mysql = require('mysql');
var dblists = new Array();
pool=mysql.createPool({host : host,user : user,password: pass });
pool.getConnection(function(err, connection){
connection.query("use nodejs");
connection.query('SELECT db_name,domain_name FROM tbl_dblist;',
function (err, rows,f) {
rows.forEach(function (entry) {
dblists[entry["domain_name"]] = entry["db_name"];
});
});
});
console.log(dblists);
Thanks in advance] The whole code: 预先感谢]整个代码:
var dblists = new Array();
app.listen(3000);
var xsocket = io.listen(app);
//console.log('Listen On Port 3000');
var pool=mysql.createPool({host : host,user : user,password: pass });
pool.getConnection(function(err, connection){
connection.query("use nodejs");
connection.query('SELECT db_name,domain_name FROM tbl_dblist;',
function (err, rows,f) {
rows.forEach(function (entry) {
dblists[entry["domain_name"]] = entry["db_name"];
});
});
});
xsocket.set('authorization', function (handshakeData, callback) {
callback(null, true);
});
xsocket.on('connection', function (conn) {
xsocket.emit('list',dblists);
});
getConnection
is asynchronous, so your console.log
fires before you get any values in your array. getConnection
是异步的,因此在获取数组中的任何值之前会触发console.log
。
If you put the console.log
inside the method, it will work as epxected: 如果将console.log
放在方法中,它将按预期运行:
xsocket.on('connection', function (conn) {
pool.getConnection(function(err, connection){
connection.query("use nodejs");
connection.query('SELECT db_name,domain_name FROM tbl_dblist;',
function (err, rows,f) {
rows.forEach(function (entry) {
dblists[entry["domain_name"]] = entry["db_name"];
});
xsocket.emit('list', dblists);
});
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.