【发布时间】:2014-02-13 02:37:40
【问题描述】:
所以我想在我的数据库中显示一个包含所有“房间”的表,我还想显示房间的创建者,但房间表中只存储了用户的 ID,所以我必须做一个查询用户表。
我试过这样的:
socket.on('room', function() {
connection.query('SELECT * FROM room', function(err, rows) {
for(i=0;i<rows.length;i++) {
var room_name = rows[i].name;
var room_nbPlayer = rows[i].nbPlayer;
var room_language = rows[i].language;
build_user(rows[i].creator, function(res){
var username = res;
io.sockets.volatile.emit('broadcast_room', "<tr>" +
"<td>" + room_name + "</td>" +
"<td>" + room_nbPlayer + "</td>" +
"<td>" + room_language + "</td>" +
"<td>" + username + "</td>" +
"</tr>");
});
}
});
});
function build_user(id,callback){
connection.query('SELECT username FROM user WHERE id ="'+id+'"', function(err, user) {
var username = user[0].username;
callback(username);
});
}
所以,例如,如果我尝试一个
console.log(room_name);
在这个函数之前
build_user(rows[i].creator, function(res){
我得到了所有的名字,但是一旦我输入函数,名字都是一样的,所以最后我的表是错误的。它只获得了正确的用户名,但房间查询中的所有变量总是显示相同的(这是我数据库中的最后一个房间)
谢谢!
【问题讨论】:
标签: javascript jquery mysql node.js socket.io