我知道firebase不允许多个orderByChild查询,因此我们必须重组代码以实现相同的效果。我正在尝试,但是我仍然坚持这样做。
我具有以下数据库结构:
posts: {
"-LY0tr3NmAlZhJDfxMch": {
"State": "California",
"City": "SanFrancisco",
"StateCity": "California_SanFrancisco",
"createdAt": 1549441397199,
"postText": "Hello!!",
"starCount": 0,
"userId": "blAWQ9g9YMciB312fasdawqeqw",
},
....
}
我想做的是查看与州和/或城市有关的帖子,以及按starCount排序。只需使用以下内容,即可查看基于州和/或城市的帖子。
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,所以我一直在关注如何重组数据库以实现上述结果。
我该怎么办?谢谢!
答案 0 :(得分:0)
正如您在问题中说的那样,您无法做到这一点,Firebase不允许这样做。 您需要从第一个查询中获取结果,并在一次(“值”)调用之后通过代码对它们进行排序。
var stateResult = firebase.database()
.ref()
.child("posts")
.orderByChild("State") //
.equalTo('...');
//Do something here with the returned stateResult to order them by StarCount
您无需为此重组数据库,只需在代码中完成