IonicフレームワークとFirebaseを使用してJSアプリケーションを構築する。同じ変数を変更する再帰的非同期DB呼び出しを処理する方法
私は、訪問した国に基づいて議論するユーザーのリストを各ユーザーに提案します。現在のユーザーよりも最も一般的な国のユーザーを推奨リストに入れてください。
私はFirebaseで二つのテーブルがあります。上記で説明したように、私は$ scope.matchesがランク付けされたユーザーのリストを保存するフロントエンドで
"country_user" : {
"france" : { "userA" : true, "userB" : true, "userC" : true },
"spain" : { "userA" : true, "userC" : true },
"russia" : { "userB" : true }
}
:
"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テーブルで取得しますこの国に
- 対応するユーザの「マッチ」配列を作成し、2の各結果を解析し、「マッチ」アレイ
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を実装するために始めたが、私は立ち往生しています:
私は二度、それらの2つのコールが行われます(ただしされている場合のみ、コール数が動的であるgetRegistrationsToCountriesを呼び出したいユーザAの場合にfunction getRegistrationsToCountries(_country){
return firebase.database().ref('/country_user/' + _country).once('value').then(function(snap){
if(snap.exists()){
snap.forEach(function(registeredUser){
});
}
)私はフロントエンドに戻ってほしい "マッチ"リストを更新するためにそれらを解析したい。
提案がありますか?
おかげ
あなたの答えはGeorgeです!私はあなたのソリューションを実装しようとしましたが、$ q(定義されていません)に参照エラーがありますが、正しく挿入すると思います。何か間違っている? –