首页 > 解决方案 > 如何调用具有唯一 ID 的孩子的孩子?

问题描述

我正在尝试使用 Firebase 实时数据库制作多人游戏大厅。我Rooms>UniqueID>UniqueID>player name为主人做的。

我希望客户端看到可用房间的列表,其中包含创建它的玩家的名称(“xxx 的房间”)。它们具有唯一的 ID,因为我不想使用身份验证服务。客户端可以选择它的名称一开始。

房间的图片

问题是我无法在 ref 中读取,因为唯一 ID 是一个键:

let idr = firebase.database().ref().child('Rooms').push().key;

主机具有与房间相同的 ID,其他客户端将具有唯一的 ID。这不起作用:

var databaseRooms = firebase.database().ref('Rooms/');
var idrref = databaseRooms.child(idr/idr);
idrref.once('value',function(snapshot) {
    snapshot.forEach(function(child) {
        console.log(child.key+':'+child.val());
    });

    }); 

我尝试复制有效的完整 id ( -Lfj5cS-1_jlfS7nf_Fb),但这是一个独特的案例,所以不是我想要的。这是更多代码以便更好地理解:

let databaseRoom = firebase.database().ref('Rooms/');

function appuyerHost() {

    let pseudo = document.getElementById("inputpseudo").value;
    //Nom entrée par le joueur dans la barre "enter your name"
    let idr = firebase.database().ref().child('Rooms').push().key;
    //Créé un id spécial pour la room, meme si deux s'apelle pareille c ok  

    if (pseudo.length < 3) { 
        document.getElementById("alertpop").style.visibility = "visible"
        } else
    // Si le pseudo n'est pas de 3 caractères de long min. message d'erreur.

    var datar = {  
     user_name: pseudo
    }
     // Récupère l'id + le nom.

     let updatesr = {};
    updatesr['/Rooms/'+ idr +'/' + idr] = datar
    firebase.database().ref().update(updatesr);
    //envoie les données a la database, la room a l'id du joueur
}

随意建议不同的大厅创建方式。除了解决方案之外,我希望您能解释一下您的理解。

标签: javascriptfirebase-realtime-databasemultiplayer

解决方案


推荐阅读