我想限制GeoFirestore结果的结果,类似于Firestore中的功能。我试图以各种方式在查询上使用limit(),但是收到没有限制功能的错误。这不可能吗?
const geoFirestore = new GeoFirestore(firebase.firestore());
const geoCollectionRef = geoFirestore.collection('locations');
const query = geoCollectionRef.near({
center: new firebase.firestore.GeoPoint(39.76068, -104.98471),
radius: 10
});
query.get().then((value = GeoQuerySnapshot) => {
value.docs.forEach(doc => {
console.log(doc)
})
})
答案 0 :(得分:0)
因此,这些附加功能(例如限制)的问题在于,为了使查询正常工作,我们在执行地理查询时会汇总多个查询。
我们创建一个查询数组,其中包含您所选区域周围的地理哈希。因此,我们可以将限制应用于每个查询,但是在汇总时,每个查询都将受到限制,并且汇总将更大。因此,在客户端,我必须重新应用该限制。这是非常可行的,效率不是很高。
目前尚不支持,但我希望将其应用到未来。您可以可以做的一件事是...
import * as firebase from 'firebase';
import { GeoQuery, GeoQuerySnapshot } from 'geofirestore';
const collection = firebase.firestore().collection('somecollection');
// APPLY LIMIT HERE
const limitQuery = collection.limit(50);
const query = new GeoQuery(limitQuery).near({
center: new firebase.firestore.GeoPoint(39.76068, -104.98471),
radius: 10
});
query.get().then((value: GeoQuerySnapshot) => {
value.docs.forEach(doc => {
console.log(doc);
});
});
但是,在这种情况下,地理位置查询的每个查询都将应用限制,而不是汇总。您可以修改所需的限制数,以便在客户端获得更多收益。 (您会在2月的某个时间看到此功能的正确集成)