Я пытаюсь создать многопользовательское лобби с использованием базы данных Firebase Realtime.Я сделал это как Rooms>UniqueID>UniqueID>player name
для хоста.
Я хочу, чтобы клиент увидел список доступных комнат с именем игрока, который его создал ("комната ххх"). У них есть уникальные идентификаторы, потому чтоЯ не хочу использовать сервис аутентификации. Клиент может выбрать его имя в самом начале.
Проблема в том, что я не могу прочитать в ссылке из-зауникальный идентификатор, который является ключом:
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
}
Не стесняйтесь предлагать различные способы создания лоббиЯ был бы признателен за разъяснение вашего понимания в дополнение к решению.