Angular 4 Firebase angularfire按值对列表进行排序

时间:2017-08-05 16:30:17

标签: angular typescript firebase angularfire

我正在使用Angular 4 Firebase和AngularFire,我有以下firebase数据库

"users" : {
    "Test1" : {
      "totalscore" : 50,
      "username" : "test1"
    },
    "Test2" : {
      "totalscore" : 30,
      "username" : "test2"
    },
    "Test3" : {
      "totalscore" : 20,
      "username" : "test1"
    },
    "Test4" : {
      "totalscore" : 10,
      "username" : "test1"
    },
    "Test5" : {
      "totalscore" : 50,
      "username" : "test1"
    },
    "Test6" : {
      "totalscore" : 30,
      "username" : "test2"
    },
    "Test7" : {
      "totalscore" : 20,
      "username" : "test1"
    },
    "Test8" : {
      "totalscore" : 10,
      "username" : "test1"
    }
  }

我阅读了firebase和AngularFire的文档,我想获取这些数据 作为一个排序列表由totalscore.I尝试了这个AngularFire link给出的所有可能的方式,但没有任何帮助。我目前得到这个代码工作正常,但它没有排序列表。

import { Component, OnInit } from '@angular/core';
import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database';

@Component({
  selector: 'app-homefiller',
  templateUrl: './homefiller.component.html',
  styleUrls: ['./homefiller.component.css']
})

export class HomefillerComponent implements OnInit {
  topusers: FirebaseListObservable<any>;
  totalscore;
  list;
  constructor(db: AngularFireDatabase) {


        this.topusers = db.list('users', {
        query: {
         orderByValue: true,
         limitToFirst: 10,
        }
        });
   }

  ngOnInit() {
  }

}

您可以通过

帮我找一个排序列表的方法吗?
  

&#34; totalscore:&#34;

或告诉我是否可以这样做? ?

1 个答案:

答案 0 :(得分:1)

如果您拥有这样的数据结构,则使用orderByValue

"userscores" : {
    "Test1" : 50,
    "Test2" : 30,
    "Test3" : 20
    "Test4" : 10,
}

在上文中,您希望在userscores上对每个子节点的值进行查询结果。

在您的情况下,您要排序的值位于totalscore下的子属性users中。所以你应该使用orderByChild:

this.topusers = db.list('users', {
    query: {
     orderByChild: "totalscore",
     limitToFirst: 10,
    }
});