如何将类似于下面的查询转换为Angular服务,该服务将返回将在没有承诺的情况下解析为result
或result
本身的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());
});
});
}
答案 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。