Ich würde dies vereinfachen, indem ich "child_added" durch "value" ersetzen würde. Dadurch wird die Liste der Spieler zurückgegeben, die Sie mit regulärem JS durchlaufen können.
Dann rufen
usersRef.child (snap.key()). Once ("value", Funktion (Daten)
für jede der Elemente in der Folge, und schieben jedes dieser Versprechen in ein Array
promiseArray.push(usersRef.child(snap.key()).once("value", function(data)...
dann könnte man
$q.all(promiseArray).then(...
, die alle Versprechungen in ein einziges Versprechen kombinieren