使用Ionic框架和Firebase构建JS应用程序。
我希望该应用根据用户访问的国家/地区向每个用户建议要与之讨论的用户列表。在建议列表中首先是最常见国家/地区的用户,而不是当前用户。
我在Firebase中有两个表:
"users" : {
"userA" : {
"countries" : [ {
"id" : 4,
"name" : "france"
}, {
"id" : 2,
"name" : "spain"
} ]
},
"userB" : {
"countries" : [ {
"id" : 4,
"name" : "france"
}, {
"id" : 2,
"name" : "russia"
} ]
},
"userC" : {
"countries" : [ {
"id" : 4,
"name" : "france"
}, {
"id" : 2,
"name" : "spain"
} ]
}
索引表:
"country_user" : {
"france" : { "userA" : true, "userB" : true, "userC" : true },
"spain" : { "userA" : true, "userC" : true },
"russia" : { "userB" : true }
}
在前端,我希望$ scope.matches存储按上述说明排列的用户列表。
在服务器端,我实现了以下逻辑:
承诺1:
function getUserCountryListPromise(_uid){
return firebase.database().ref('users/' + user.uid + '/countries/').once('value').then(function(snap){
var userCountryList = [];
if(snap.exists()){
snap.forEach(function(country){
userCountryList.push(country.val().name);
});
}
return userCountryList;
});
}
我开始实施2但我被困住了:
function getRegistrationsToCountries(_country){
return firebase.database().ref('/country_user/' + _country).once('value').then(function(snap){
if(snap.exists()){
snap.forEach(function(registeredUser){
});
}
如果是userA,我想两次调用getRegistrationsToCountries,只有当这两个调用完成时(但是调用的数量是动态的)我想解析它们以更新"匹配"列表,我想返回前端。
有什么建议吗?
由于