【问题标题】:Firebase/GeoFire - Most popular item at locationFirebase/GeoFire - 当地最受欢迎的项目
【发布时间】:2016-10-10 07:47:48
【问题描述】:

我目前正在评估应作为移动应用程序后端的数据库。


现在我正在关注 Firebase,目前我非常喜欢它。


要求有可能获取

  1. 最受欢迎的商品
  2. 某个位置
  3. (可能在将来:另外在某个时间范围内,这将是项目的一个属性)

来自数据库。


我很自然地偶然发现了 GeoFire,它为 Firebase 提供了基于位置的查询可能性。

不幸的是 - 至少据我所知 - 不可能通过距离以外的属性对结果进行排序。 (如果我错了,请纠正我)。

如果我对距离不感兴趣(我只想在某个半径范围内拥有物品,无论离中心有多远)而是对流行因素(例如,为了简单起见,一个简单的代表人气的数字)?

重要提示:
在客户端进行过滤/排序不是一种选择(或至少是最不受欢迎的一种),因为结果集可能会增长到无限量。


应用程序的第一个版本将用于 android,因此第一步将使用 Firebase Java 客户端库。


是否有可能解决这个问题,或者 Firebase 是否已退出竞争,并且不是该工作的合适人选?

【问题讨论】:

  • Geofire 的服务器端查询无法添加额外的条件。嗯...严格来说,您可以找到一种方法来扩展 Geohashes 的魔力,将第三个数字(除了 lat 和 lon)添加到组合中。但尽管可能,但我怀疑它对我们大多数人来说是否可行。
  • 好的,感谢您的快速回复。很遗憾,我真的很想使用 Firebase 作为后端,但不幸的是,这个查询至关重要。我会看看我是否还能找到另一种解决方案(例如,在将答案发送给那些特殊用例的客户端请求之前,使用一个完成繁重工作的中间服务器)。

标签: firebase geolocation firebase-realtime-database geofire


【解决方案1】:

无法在 Geofire 的服务器端查询中添加额外的条件。

Firebase 数据库的查询模型只允许过滤单个属性。 Geofire 已经在经纬度上执行了一项看似不可能的过滤壮举。它通过Geohashes 的魔力实现这一点,它将纬度和经度组合成一个字符串。

严格来说,您可以找到一种方法来扩展 Geohashes 的魔力,将第三个数字添加到组合中。但尽管可能,但我怀疑它对我们大多数人来说是否可行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 2020-07-09
    • 2022-01-22
    • 2012-12-16
    • 1970-01-01
    相关资源
    最近更新 更多