Облачные функции для Firebase - реализация GeoFire
Реализация GeoFire следующим образом:
const GeoFire = require('geofire');
const geoFire = new GeoFire(admin.database().ref().child('geolocation'));
В базе данных onWrite:
const promises = [];
promises.push(geoFire.set(id, [37.79, -122.41]));
return Promise.all(promises);
В приведенном ниже коде я делаю geoquery:
exports.nearbyjobs = functions.database.ref('/users/{userid}/account/l').onWrite(event => {
const location = event.data;
if (location.child("lat").val() === null || location.child("lng").val() === null) return;
const key = event.data.key;
const uid = event.params.userid;
const results = geoFire.query({
center: [location.child("lat").val(), location.child("lng").val()],
radius: 3000
});
});
Мой вопрос и проблема в том, как я справлюсь с results
из запроса Geofire? Мне нужно, чтобы результат запроса обновлялся в реальном времени.
1 ответ
Попробуйте что-то вроде этого...
var arr = [];
var onKeyEnteredRegistration = results.on("key_entered", function(key, location, distance) {
console.log(key + " entered query at " + location + " (" + distance + " km from center)");
//each location is added to the array
arr.push[{'key':key, 'location':location, 'distance':distance}];
});
Удачи.