Firebase return 多个对象

Firebase return multiple objects

我正在使用 firebase,在下面的查询中 extand() 是一个连接对象的函数。有人可以帮我从查询中删除 $timeout 吗?

目前我正在等待我的 playerList 填充。

var getJoinedPlayers = function(gameId){
        var deferred = $q.defer();
        var playerList = {};
        var usersRef = new Firebase(FBURL+'users');
        var gameRef = new Firebase(self.firebaseURL);
        var gamePlayersRef = gameRef.child(gameId).child("players");
        gamePlayersRef.on("child_added", function(snap) {
          usersRef.child(snap.key()).once("value", function(data) {
            playerList[snap.key()] = extend({'playerId': snap.key()},data.val());
            })
        });
        $timeout(function() {
          if (playerList) {
            deferred.resolve(playerList);
          } else {
            reason = {'message': "player Not found"};
            deferred.reject(reason);
          }
        }, 1300);

      return deferred.promise;
    };

我会通过用 "value" 替换 "child_added" 来简化它。这将 return 玩家列表,您可以使用常规 JS 对其进行迭代。
然后调用

usersRef.child(snap.key()).一次("value",函数(数据)

对于结果中的每一项,并将这些承诺中的每一个推入一个数组

promiseArray.push(usersRef.child(snap.key()).once("value", function(data)...

那么你可以

$q.all(promiseArray).then(...

这会将所有承诺合并为一个承诺