を編集する:私は2つの問題があります。 1.ノードが上書きされるのはなぜですか? 2.コールバックが明らかに繰り返し呼び出されているのはなぜですか?ファイアベースの存在システム:決して書き込みを停止しない
this guideに従って、私のWebアプリケーションにプレゼンスシステムを実装します。私は、ログインしているすべてのユーザーが、他のすべてのユーザーがオンラインであるかどうかを常に知ることができるようにしたいと考えています。
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);
}
});
私はコードをテストする場合、それはプレーヤー「接続」-nodeのそれぞれにtrue
の数千人を書き込みます はここに私のコードです。奇妙なことは、各プレイヤーの他のすべての子供たちが消去されていることです。なぜこうなった? プレーヤーのノードは次のようになります。私は私のコードで「player1」-node、それだけの子を設定しない
"player1" : {
"name": "Vladimir Putin",
"country": "Russia",
...,
...,
"connections" : {
...
...
}
}
。私はこの動作を引き起こすのは上記のコードであることを100%は知っていますが、その理由を理解することはできません。誰かが上記のコードがプレーヤーノードをクリアする理由を教えてもらえますか?
'snap.val()'の値は何ですか? '==='を '=='に変更した理由はありますか? –
いいえ、私はちょうどそれを偶然しました。私は今それを変更しました。同じこと。 snap.val()の値は、コードスニペットに入り、接続配列に別のtrueを送り込むので、trueでなければなりません。 – hellogoodnight
この 'newState'変数はあなたのコードに何度も現れますか? – vzsg