首页 > 解决方案 > 使用两个过滤器进行选择 - Firebase

问题描述

我正在使用 Firebase 进行数据存储。在里面我有以下集合:

在此处输入图像描述

我想提出一个请求,该请求会显示 'qtquartos'> 4 和 'vagasgaragem'> 3 的所有帖子。我进行了很多研究,阅读了文档,但没有发现任何关于以及如何提出此类请求的信息。

这是我尝试使用 2 个规格执行的测试查询,但是我没有成功。

/posts.json?orderBy="qtquartos"&startAt="5"&"vagasgaragem=startAt=3"

标签: jsonfirebaseapifirebase-realtime-database

解决方案


Firebase 数据库查询只能对单个属性进行排序/过滤。在许多情况下,可以将要过滤的值组合成一个(合成)属性。有关此方法和其他方法的示例,请在此处查看我的答案:基于 Firebase 中的多个 where 子句的查询

但这仅适用于一个范围过滤器,其他过滤器需要是相等过滤器,在您的示例中并非如此。所以剩下的唯一选择是在服务器上执行一个过滤器,在客户端执行另一个。

唯一的其他选择是找到一种将qtquartos和的值组合vagasgaragem成单个值的方法,该值是范围可过滤的。很难找到这样做的方法,但 geohashes 就是这样做的一个例子。这就是为什么 Firebase 上有一个 GeoFire 库,它允许您过滤一系列纬度和经度。但正如所说,这真的很罕见,我怀疑你可以轻松地将你的qtquartosand组合vagasgaragem成一个值。


推荐阅读