0

私のionic2アプリでは、最も近い場所(バー、レストランなど)の情報がリアルタイムで更新されるリストを表示する必要があります。私がGeoFireのドキュメントを読んでいるとき、私は場所と場所の詳細データをツリーに分けておくべきです。だから、私はfirebaseに次のようにありますGeofireとfirebaseとAngularfireで質問する

-geoplacesdata 
    -placeID1 
     -g:"spdxm88qvr" 
     -l 
     -0: 43.4658582 
     -1: 3.7578978000000234 
    -placeID2 
     -g:"spdxm88qvr" 
     -l 
      -0: 45.4658582 
      -1: 4.7578978000000234 

-places_details 
    -placeID1 
     -rate: 2 
     -name: "Place 1" 
     -infos:"Free cocktail" 

    -placeID2 
     -rate: 3 
     -name: "Place 2" 
     -infos:"Free for kids" 

ユーザーが、私は彼の位置を取得し、GeoFireで、私は彼のエリアの近くに各placeIDを取得することができるよページをロードするとき。私はすべての場所IDを取得したので、これらの場所のすべての詳細を表示し、各選択した場所IDの "情報"の子に発生するすべての更新を購読します。

それは作品

geoQuery.on("key_entered", (key) => { 
placesRef.child(key).on("value", (snapshot) => { 
var placesDetails = snapshot.val(); 
// .. and push each places details snapshot in an array named "matches" 
this.matches.push(placesDetails); 
}); 
}); 

、私は、すぐに場所が更新されると、選択placesIDためのすべての場所の詳細を取得しかし:私はそれを試してみました(例:子「に関する情報は」更新ある)新しいキーがにプッシュされます配列と私は重複した情報を得る..

これ以外の解決策はありますか?

+0

こんにちはFank、あなたがgeofireにいくつかのスキルを持っている(私は他の記事を見て)私が尋ねるすべての質問に、私はあなたが私の質問を編集見るが、私はあなたからどんな答えを得ることはありません...しかし、それはそうです。多分あなたは私を助けることができるでしょう。 –

+0

これは特にGeoFire関連ではありません。配列に重複した結果が得られる理由は、すべての変更に対して配列に新しいデータをプッシュすることです。 – eikooc

答えて

0

この問題を回避するには、配列に一意の項目だけを挿入する必要があります。キーがkey_enteredイベントを発生させるたびに、そのデータを配列にプッシュしますが、それが既に存在するかどうかをチェックする必要があります。

if (this.matches.findIndex((x) => x.$key === placesDetails.$key) === -1) { 
    this.matches.push(placesDetails) 
} 
関連する問題