Как позвонить ребенку с ребенком, у которого есть уникальный идентификатор? - PullRequest
1 голос
/ 25 мая 2019

Я пытаюсь создать многопользовательское лобби с использованием базы данных Firebase Realtime.Я сделал это как Rooms>UniqueID>UniqueID>player name для хоста.

Я хочу, чтобы клиент увидел список доступных комнат с именем игрока, который его создал ("комната ххх"). У них есть уникальные идентификаторы, потому чтоЯ не хочу использовать сервис аутентификации. Клиент может выбрать его имя в самом начале.

image of rooms

Проблема в том, что я не могу прочитать в ссылке из-зауникальный идентификатор, который является ключом:

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

Хост имеет тот же идентификатор, что и комната, а другие клиенты будут иметь уникальный. Это не работает:

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());
    });

    }); 

Я попытался скопировать полный идентификатор (-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
}

Не стесняйтесь предлагать различные способы создания лоббиЯ был бы признателен за разъяснение вашего понимания в дополнение к решению.

...