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(...
这会将所有承诺合并为一个承诺
我正在使用 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(...
这会将所有承诺合并为一个承诺