Modifica Per chiarire: Ho due problemi. 1. Perché il mio nodo viene sovrascritto? 2. Perché la richiamata viene chiamata apparentemente in modo ricorsivo?Sistema di presenza Firebase: non smette mai di scrivere
Seguo this guide per implementare un sistema di presenza sulla mia webapp. Voglio che tutti gli utenti registrati siano sempre in grado di sapere se tutti gli altri utenti sono online o meno. Ecco il mio codice:
currentGameRef = gamesInProgressRef.child(newState.currentTable);
var myConnectionsRef = currentGameRef.child("player" + newState.myPlayerNumber).child("connections");
var lastOnlineRef = currentGameRef.child("player" + newState.myPlayerNumber).child("lastOnline");
var connectedRef = firebase.database().ref('.info/connected');
connectedRef.on("value", function(snap) {
if(snap.val() == true){
var con = myConnectionsRef.push(true);
con.onDisconnect().remove();
lastOnlineRef.onDisconnect().set(firebase.database.ServerValue.TIMESTAMP);
}
});
Quando ho testare il codice, scrive migliaia di true
a ciascuno dei giocatori "connessioni" -node. La cosa strana è che tutti gli altri bambini di ogni giocatore vengono cancellati. Perché sta succedendo? nodo Un giocatore simile a questa:
"player1" : {
"name": "Vladimir Putin",
"country": "Russia",
...,
...,
"connections" : {
...
...
}
}
non ho impostato il -node "player1" nel mio codice, solo un bambino di esso. So per il 100% che è il codice sopra che causa questo comportamento, ma non riesco a capire perché. Qualcuno può dirmi perché il codice sopra cancella i nodi del giocatore?
quali sono i valori di 'snap.val()'? c'è una ragione per cui hai cambiato '===' in '=='? –
No, l'ho fatto solo accidentalmente. L'ho cambiato ora. Stessa cosa. Il valore di snap.val() deve essere vero poiché immette lo snippet di codice e spinge un altro jet vero sull'array delle connessioni. – hellogoodnight
Che cosa è questa variabile 'newState' che appare nel tuo codice più volte? – vzsg