【发布时间】:2020-12-09 22:34:04
【问题描述】:
我有一个如下所示的 Firebase 实时数据库:
{
"Posts": {
"k4aaluyjh5" : {
"likes": {
"uid1" : 1,
"uid2" : 1,
"uid3" : -1,
"uid4" : 1,
"uid5" : 1,
"uid6" : -1,
"uid7" : 1,
"uid8" : 1,
"uid9" : 1,
"uid10" : 0,
"uid11" : 1,
"uid12" : 1
}
},
"949rAWacb1" : {
"likes": {
"uid1" : 1,
"uid2" : 1,
"uid3" : 1
}
},
"57jrnbakh1":{
"likes": {
"uid1" : -1,
"uid2" : 1
}
}
}
}
如上面的 JSON 所示,用户的 like 的值可以是 1、0 或 -1。然后,我使用 likes 对象下的值的总和来获得每个帖子的总点赞数。我在安全规则上使用了.indexOn 以optimize queries 为likes,如下所示。
{
"rules": {
"Posts":{
".indexOn": "likes"
},
".read": "true",
".write": "true"
}
}
但是,AngularFireDatabase base 似乎没有按每个帖子的喜欢总和对帖子进行排序的选项。我找不到办法。目标是对帖子进行排序,最喜欢的帖子排在第一位。以下是我的.TS代码:
getListbyTop() {
this.postList= this.firebaseDb.list('Posts', query =>
query.orderByChild('likes').limitToFirst(100)
);
return this.postList
}
【问题讨论】:
标签: javascript firebase-realtime-database angularfire2