GeoFire orderByChild过滤

GeoFire orderByChild filtering

我似乎偶然发现了 GeoFire 的一个问题,因为我似乎无法过滤我的 GeoFire 查询。在我的平台上,用户创建帖子并使用 geofire 设置他们的位置,因此,可能有成千上万的帖子我不想在客户端过滤..

我想 orderByChild('created')limitToLast('10') 这样在客户端不会花费太长时间..

我目前拥有的是:

  this.geoFire = new GeoFire(this.database.database.ref()
  .child('location'))
  this.geoFire.query({
    center: [this.userLocation.lat, this.userLocation.lng],
    radius: 7
  })
  .on('key_entered', (key, location, distance) => {
    this.subscription = this.database.database.ref('/posts/'+key)
    .orderByChild('created')
    this.subscription.once('value', (snapshot) => {
          this.postFeed.push(snapshot.val())
    });
  })

但这似乎不起作用。

我的位置数据库如下所示:

以及帖子:

我做错了什么?为什么我不能过滤 orderByChild('score') or 'created'

Firebase 查询根据您指定的条件从特定位置检索(可能)多个子节点。您已经在此处获得 post 的完整路径:database.ref('/posts/'+key)。您不能将已经知道要检索的 post 与根据条件查询 post 结合起来。

这里最好的办法是检索范围内的所有 post,然后在客户端筛选前 10 个最近的。