Получить результаты GEO рядом с помощью GEOFirestore - PullRequest
0 голосов
/ 31 декабря 2018

Я использую GeoFirestore, чтобы написать облачную функцию в облачном Firestore, чтобы запрашивать близлежащие местоположения, основываясь на центре и радиусе.

Код инициализации выглядит следующим образом

    const firebase = require('firebase');
    const admin = require('firebase-admin');
    const functions = require('firebase-functions');
    const GeoFirestore = require("geofirestore").GeoFirestore;
    admin.initializeApp(functions.config().firebase);
    const db = admin.firestore();

JSкод для запроса:

const object = db.collection('UserObject');
var geoFirestore = new GeoFirestore(object);
const geoQuery = geoFirestore.query({
    center: new firebase.firestore.GeoPoint(17.500362, 78.587374),
    radius: 1
});
geoQuery.on('ready', () => {
    var locations = geoQuery._locationsTracked;
    var keys = [];
    locations.forEach(function (locationMap, key) {
        if (typeof locationMap !== 'undefined' && locationMap.isInQuery) {
            keys.push(locationMap);
        }
    });
    response.status(200).json(keys);
  });

Я новичок в библиотеке GeoFirestore.Мой вопрос заключается в том, является ли это правильной реализацией, чтобы получить близлежащие местоположения, или есть другой способ запросить соседние местоположения, используя эту библиотеку?

1 Ответ

0 голосов
/ 31 декабря 2018

Этот вид требует масштабной доработки, но решение будет проще (код пояснен в комментариях):

const object = db.collection('UserObject');
const geoFirestore = new GeoFirestore(object);
const geoQuery = geoFirestore.query({
  center: new firebase.firestore.GeoPoint(17.500362, 78.587374),
  radius: 1
});

// Where we will store the results
const results = [];

// As documents come in, push them into our results
geoQuery.on('key_entered', (key, document) => results.push(document));

// After the query is initially complete we then send the results to the client
geoQuery.on('ready', () => response.status(200).json(results));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...