我正在使用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库的新手。我的问题是,这是一个适当的实现来获取附近的位置,还是有一种不同的方式来使用这个库查询附近的位置?
发布于 2018-12-31 13:09:22
这需要大量的返工,但解决方案会更简单(注释中解释的代码):
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));https://stackoverflow.com/questions/53983550
复制相似问题