Облачные функции для 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);

В приведенном ниже коде я делаю геозапрос:

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? Мне нужно, чтобы результат запроса обновлялся в моей БД в режиме реального времени.


person Diego P    schedule 03.11.2017    source источник


Ответы (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}];
    });

Удачи.

person Obi E    schedule 09.07.2018