限制 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 月的某个时候看到此功能已正确集成)