我怎样才能限制到最后的orderByChild?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我怎样才能限制到最后的orderByChild?相关的知识,希望对你有一定的参考价值。

我需要做的是基本上获得最后50的前十名。或者字面上限制ToLast(50)那么orderByChild。

现在,这段代码可以很好地获取我的整个列表中的前50个(数千个)并将其反转以获得正确的显示顺序,但它会对整个列表进行排序并返回前50个。我需要对最后50个条目中的前10个进行排序。

export class DisplayComponent{
  trackFbObjects = (idx, obj) => obj.$key;

  fml: Observable<any>

  constructor(db: AngularFireDatabase) {    
    this.fml = db.list('vertigo', ref => ref.limitToLast(50).orderByChild("totalvote")).valueChanges()
    .map((Array) => Array.reverse());
  }

}

然后我将使用NgFor和NgIf将50中的10个拉出来:

<ul *ngFor="let item of (fml | async); let i = index; trackBy:trackFbObjects">
<li *ngIf="i<10"> {{ item.title }}  </li></ul>

我想也许有可能只做limitToLast(50)然后在Array.reverse()期间可能用“totalvote”对它进行排序?我不知道,但我找不到工作的解决方案,任何帮助将不胜感激。

如果有帮助,我的条目看起来像这样:

     vertigo
       -L9X0AiwPemOIepVm5gf
         -totalvote: "333"
         -title: "Smile."
答案

如果将来有人需要这个,我能够在我的查询之外对我的列表进行排序,如下所示:

  constructor(db: AngularFireDatabase) {    
    this.fml = db.list('vertigo', ref => ref.limitToLast(50)).valueChanges()
    .map((Array) => Array.sort((a, b) => b['totalvote'] - a['totalvote']));
  }

以上是关于我怎样才能限制到最后的orderByChild?的主要内容,如果未能解决你的问题,请参考以下文章

我怎样才能捕捉到视图变得可见

我们怎样才能找回最后一个被删除的单词

VB.NET - 给定一个日期,我怎样才能得到最后四个星期五的日期?

我怎样才能将时间序列数据从昨天移到今天的大熊猫?

Flutter:Firebase 实时数据库 orderByChild 对查询结果没有影响

视频流比我想要的更缩放,并且与本地流视图不同。我怎样才能解决这个问题?