限制 GeoFirestore 的结果?
Limit results of GeoFirestore?
我想限制 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)
})
})
因此,这些附加功能(如限制)的问题在于,为了使查询正常工作,我们会在您执行 Geoquery 时聚合多个查询。
我们使用围绕您选择的区域的 geohashes 创建一组查询。所以我们可以将限制应用于每个查询,但是当聚合时每个查询都会应用限制,并且聚合会更大。那么在客户端,我必须重新应用限制。很可行,就是效率不高
目前尚不支持它,但我希望在未来应用它。您可以做的一件事是...
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 月的某个时候看到此功能已正确集成)
我想限制 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)
})
})
因此,这些附加功能(如限制)的问题在于,为了使查询正常工作,我们会在您执行 Geoquery 时聚合多个查询。
我们使用围绕您选择的区域的 geohashes 创建一组查询。所以我们可以将限制应用于每个查询,但是当聚合时每个查询都会应用限制,并且聚合会更大。那么在客户端,我必须重新应用限制。很可行,就是效率不高
目前尚不支持它,但我希望在未来应用它。您可以做的一件事是...
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 月的某个时候看到此功能已正确集成)