В нынешнем виде geofire
служит в качестве индекса для выполнения гео-запросов и предоставляет ключ нужного вам документа (который будет храниться в отдельной «коллекции»).
Вы должны использовать geofire
и отдельную «коллекцию» (назовите ее eventPlaces )
var firebaseRef = firebase.database().ref('eventPlaces');
var geoFire = new GeoFire(firebaseRef);
Теперь вы можете использовать ее как индекс для ваших событий и может добавлять к нему элементы следующим образом.
geoFire.set('-K_Pp-3RBJ58VkHGsL5P', [40.607765, -73.758949]);
Ваша RTDB Firebase будет выглядеть следующим образом:
{
'events': {
'-K_Pp-3RBJ58VkHGsL5P': {
// All your data here
}
},
'eventPlaces': {
'-K_Pp-3RBJ58VkHGsL5P': {
'g': 'dr5x186m7u',
'l': [40.607765, -73.758949]
}
}
}
Итак, наконец, когда вы выполните запрос к вашему geoFire
:
geoFire.query({
center: [40.607765, -73.758949],
radius: 10
}).on('key_entered', (key, location, distance) => {
console.log(key + ' entered query at ' + location + ' (' + distance + ' km from center)');
});
В конечном итоге вам будет возвращен ключ документа, для которого вы можете выполнить обычный запрос Firebase для этого отдельного документа.