如何使用Angular在firebase上创建数据排名

时间:2017-06-07 19:22:39

标签: angular firebase firebase-realtime-database

我需要为我的应用程序创建一个排名类型,以列出最合格的产品。有什么想法吗?

我的火力基地

products-
| id--
|  |  liked:2
|  |  name: x
| id--
|  |  liked:1
|  |  name: y
| id--
|  |  liked:3
|  |  name: z

我的申请

X 2
y 1
z 3

我需要

z 3
X 2
y 1
我找到了这个。 用于反转

var ref = new Firebase('https//buzzg**.firebaseio.com/comments');
query = ref.orderByChild('timestamp');
comments = []; 
query.once('value', function(snap) { 
    snap.forEach(function(ss) { 
      comments.push(ss.val()); 
    }); 
    comments = comments.reverse(); 
 });

但我不知道实施。因为(foreach)里面的函数(ss)错误

1 个答案:

答案 0 :(得分:0)

this.rankedItems$ = this.angularfireDatabase.list('products')
  .map(products => products.sort((a, b) => b.liked - a.liked));

这将为您提供一个可观察的数组,每个数组包含{liked, name}个对象,按liked降序排序。您可以在模板中使用它,如下所示:

<h3>Products ranked by likes</h3>
<ul>
  <li *ngFor="let item of rankedItems$ | async">
    {{item.name}}
  </li>
</ul>

或者,你可以做到

this.angularfireDatabase.list('products', {query:
  orderByChild: 'liked'
}};

但这仅限于按升序排序。