firebase - 使用 Geofire + Firebase 过滤结果

标签 firebase firebase-hosting geofire

我正在尝试弄清楚如何使用 Geofire 进行过滤查询。 假设我有不同类别的餐厅。我想将该类别添加到我的查询中。我该怎么办?

我现在的一种方法是使用 Geofire 查询键,对每个键运行 for 循环并获取餐厅,然后将适当的餐厅插入数组中。 这些看起来效率很低。还有其他方法可以解决这个问题吗?

理想情况下,我将获得过滤后的结果,并且仅在每个项目即将显示时加载它们。

干杯!

最佳答案

Firebase 查询只能按一种条件进行过滤。 Geofire 已经做了很多 "magic"允许它同时过滤经度和纬度。在该方程中添加另一个属性是可能的,但远远超出了 Geofire 默认处理的范围。请参阅GeoFire: How to add extra conditions within the query?

如果您只想一次访问一个类别,您可以将餐厅放入每个类别的顶级节点中,并将 Geofire 指向一个类别。

/category1
    item1
        g: "pns0h0mf2u"
        l: [-53.435719, 140.808716]
    item2
        g: "u417k3dwub"
        l: [56.83069, 1.94822]
/category2
    item3
        g: "8m3rz3s480"
        l: [30.902225, -166.66809]
/items
    item1: ...
    item2: ...
    item3: ...

在上面的示例中,我们有两个类别:category1 有 2 个项目,category2 只有 1 个项目。对于每个项目,我们都会看到 Geofire 使用的数据:geohash 以及经度和纬度。我们还保留了一个包含这 3 项其他属性的列表。

但更常见的是,您只需在客户端代码中进行额外的过滤即可。如果您担心其性能:对其进行测量,共享代码、JSON 数据和测量结果。

关于firebase - 使用 Geofire + Firebase 过滤结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34347571/

相关文章:

ios - 为 Firebase 6.5.0 安装 Geofirestore

php - mysql 值转为 html 形式

firebase - 缓存 Firebase 请求的云函数的示例,并且仅在成功编辑配置文件后重新缓存

angularjs - 如何在 Firebase 上上传并运行 Angular 应用程序?

android - Geoquery 填充 ListView/RecyclerView

android - Firebase GeoFire,检索从我当前位置到特定半径的帖子

firebase - 如何在Flutter中显示除已登录用户外的Firebase用户列表?

php - Firebase 使用 php 过滤数据

android - Firebase/Android - 通过 UID 加载用户

部署在 firebase 托管中的 Angular 6 倍数应用程序