javascript - 如何在 Firebase 数据库中实现多个 orderByChild 查询
问题描述
我知道firebase不允许多个orderByChild查询,所以我们必须重组代码以达到相同的效果。我正在尝试,但我被困在如何做到这一点上。
我有以下数据库结构:
posts: {
"-LY0tr3NmAlZhJDfxMch": {
"State": "California",
"City": "SanFrancisco",
"StateCity": "California_SanFrancisco",
"createdAt": 1549441397199,
"postText": "Hello!!",
"starCount": 0,
"userId": "blAWQ9g9YMciB312fasdawqeqw",
},
....
}
我想做的是查看用州和/或城市查询的帖子,并按星数排序。只需查看基于州和/或城市的帖子,可以使用以下方法完成。
firebase
.database()
.ref()
.child("posts")
.orderByChild("State") // or City or StateCity
.equalTo('...')
...
以上将仅基于州或城市或州城向我返回所有帖子。现在我想做的是用starCount 的数量再次订购这些返回的查询。例如,以下内容:
firebase
.database()
.ref()
.child("posts")
.orderByChild("State") // or City or StateCity
.equalTo('e.g. California') // query posts that have state California
.orderByChild("StarCount") // from posts of California, order them by starCount
.once("value")
...
我不能再次使用 orderByChild,所以我被困在如何重组我的数据库以实现上述结果。
我该怎么做?谢谢 !
解决方案
正如您在问题中所说,您不能这样做,Firebase 不允许这样做。您需要从第一个查询中获取结果,并在 once("value") 调用之后通过代码对它们进行排序。
var stateResult = firebase.database()
.ref()
.child("posts")
.orderByChild("State") //
.equalTo('...');
//Do something here with the returned stateResult to order them by StarCount
您无需为此重构数据库,只需在代码中完成即可
推荐阅读
- c# - 为什么 SqlDependency 对象无法检测到 SQL Server 表的变化?
- xcode - 如何将 Xcode 更新到 9.3 和 mac sierra
- php - codeigniter 使用通配符(任意)路由固定字符串或字符
- java - 使用 Java 中的任务调度程序更新表时行被锁定
- prolog - 给定带有成员谓词的查询,回溯如何工作的混乱
- java - 如何在列表视图上添加对象?
- excel - Excel:如何计算单元格范围内的特定字符以用于单独范围内的不同类别
- python - Selenium WebDriver 将数据逐行写入CSV
- java - 引导类路径未与 -source 1.7 一起设置 - netbeans
- python - Matplotlib:子图中的不同 x 轴标签