0
所以我想在我的數據庫中顯示一個包含所有「房間」的表格,我也想顯示房間的創建者,但只有用戶的ID存儲在房間表中,所以我必須在用戶表上進行查詢。使用節點js進行2個異步查詢
我想是這樣的:
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);
});
}
所以,對於爲例,如果我這個功能
build_user(rows[i].creator, function(res){
我得到了所有的名稱前嘗試
console.log(room_name);
,但一旦我在函數中輸入的名字都是一樣的,所以最後我的表是錯誤的。它只有用戶的正確用戶名,但房間查詢顯示的所有變量始終是相同的(這是我的數據庫中的最後一個房間)
謝謝你!
非常感謝您! – user3198601