Javascript 我想在node.js中将mysql函数的变量用于外部
我想在node.js中将mysql函数的变量用于外部。我在做两个问题。但我无法访问该变量。我使用了全局变量,但结果是一样的。如何访问该变量 我的代码似乎是:Javascript 我想在node.js中将mysql函数的变量用于外部,javascript,mysql,node.js,socket.io,Javascript,Mysql,Node.js,Socket.io,我想在node.js中将mysql函数的变量用于外部。我在做两个问题。但我无法访问该变量。我使用了全局变量,但结果是一样的。如何访问该变量 我的代码似乎是: // Mysql query... mysql.query(messages_query, function(err, result) { // Add the results in socket... if(result.length > 0) { // messages array
// Mysql query...
mysql.query(messages_query, function(err, result) {
// Add the results in socket...
if(result.length > 0) {
// messages array
var messages = [];
// Foreach
result.forEach(function(message){
// User query...
var user_query = 'SELECT id, username, avatar FROM users WHERE id = '+message["from"];
// Second mysql query...
mysql.query(user_query, function(err, result) {
// Add result to global function
if(result.length > 0) global.user += result;
else console.log("User not found");
});
// Message array
message["from"] = global.user;
// Concat...
var messages = messages.concat(message);
});
console.log("--- MESSSAGES ---");
console.log(messages);
// Users are undefined
} else console.log("User not found");
});
抱歉,我的英语不好,所以我们这里有很多问题或误解。首先,这两条线相互冲突:
var messages = [];
var messages = messages.concat(message);
第二行至少应为:
messages.push(message);
将消息添加到数组中。然而,一个更基本的问题是对代码是同步的误解。以下调用是异步的:
mysql.query...
result.forEach...
mysql.query...
第一个是对的,但另外两个可能被误用了。我认为你实际上在寻找这样的东西:
// Mysql query...
mysql.query(messages_query, function(err, result) {
// Add the results in socket...
if(result.length > 0) {
// messages array
var messages = [];
// Foreach
for (int i = 0; i < result.length; i++) {
// User query...
var user_query = 'SELECT id, username, avatar FROM users WHERE id = ' + result[i].from;
// Second mysql query...
mysql.query(user_query, function(err, userResult) {
// Add result to global function
if(userResult.length > 0) {
result[i].from = userResult.username;
messages.push(result[i]);
}
else {
console.log("User not found");
}
});
}
console.log(messages);
}
else {
console.log("User not found");
}
});
注意:虽然上述方法可能有效,但我的最大立场是,您只需更改messages\u查询以连接到users表,并在messages\u查询中获取所需的字段。这样做将意味着你没有转置结果的能力。@这不应该令人惊讶。正如我所说,这只是猜测。没有足够的信息,问题也不够清楚,无法理解你需要什么。考虑一下注意事项:我最后离开了。