在我的 ionic2 应用程序中,我需要显示一个列表,其中实时更新最近的地点(酒吧、餐厅等)信息。正如我在 GeoFire 文档上阅读的那样,我应该在树中单独保存位置和地点详细信息数据。所以我的firebase中有以下内容:
-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的所有地点详细信息,但是一旦更新了地点(例如:子“信息”已更新),就会将新密钥推送到数组中,并且我得到重复的信息..
还有比这更好的解决方案吗?