gpt4 book ai didi

mysql - Nodejs更改mysql查询中的全局变量

转载 作者:行者123 更新时间:2023-11-29 23:17:20 28 4
gpt4 key购买 nike

我正在尝试创建一个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);

提前致谢]整个代码:

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 是异步的,因此您的 console.log 在您获取数组中的任何值之前触发。

如果将 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);
});
});
});

关于mysql - Nodejs更改mysql查询中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27661661/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com