2

私はfirebaseを初めて使用し、ドキュメントを読みましたが、ユーザーデータが入力されたすべてのラダーのリストを取得する方法を見つけることができないようです。ユーザーがメンバーであるすべてのラダーでユーザー データを複製したくはありません。

ここに私のデータ構造があります:

{
"ladders" : [ {
    "description" : "Real Real Tennis",
    "name" : "Ping Pong",
    "players" : {
      "simplelogin:5" : true
    }
  }, {
    "description" : "Real Tennis",
    "name" : "Mario Tennis",
    "players" : {
      "simplelogin:5" : true
    }
  } ],
  "users" : {
    "simplelogin:5" : {
      "email" : "bob@bob.com",
      "md5hash" : "1e737a7b6e1f0afb1d6fef521097400b",
      "name" : "Bob",
      "username" : "bob1"
    }
  }
}

これが私の最善の試みですが、ユーザーのルックアップが完了する前にはしごのルックアップが終了して戻るように見えるため、プレーヤーが空で返されます。

laddersRef.on('value', function(laddersSnapShot){
        var ladders = []
        laddersSnapShot.forEach(function(ladderData) {
            var ladder = ladderData.val();
            ladder.players = [];
            ladder.id = ladderData.key();

            laddersRef.child(ladder.id).child('players').on('value', function(snap){
                snap.forEach(function(player){
                    usersRef.child(player.key()).on('value', function(snap1){
                        ladder.players.push(snap1.val())
                    })
                })
            })
            ladders.push(ladder)
        });
    });
4

1 に答える 1