为复杂的Firebase查询提供角度服务

时间:2016-10-07 09:41:43

标签: javascript angularjs firebase firebase-realtime-database angular-promise

如何将类似于下面的查询转换为Angular服务,该服务将返回将在没有承诺的情况下解析为resultresult本身的promise。 我想我需要以某种方式链接承诺,但无法弄清楚如何,从未完成它。

var result = [];
var groups = $firebaseArray(firebase.database().ref().child("users/" + uid + "/leagues"));
groups.$loaded().then(function (data) {
  _.each(data, function(one){
    firebase.database().ref().child('leagues/' + one.$id).once('value', function(snapshot) {
      result.push(snapshot.val());
    });
  });

}

1 个答案:

答案 0 :(得分:2)

这是你想要的吗?

function getGroups() {
  return $firebaseArray(firebase.database().ref().child("users/" + uid + "/leagues")).$loaded();
}

function getDataGroups(groups) {
  return $q.all(groups.map(function(one) {
    return firebase.database().ref().child('leagues/' + one.$id).once('value');
  }));
}

getGroups().then(getDataGroups).then(function(results) {
  //blabla
});

注意:我从未玩过firebase(所以也许我做了一些错误),但经过一些快速研究$loaded()once()都返回了Promise。