按字母顺序排列从Cloud Firestore提取的数据

时间:2019-02-23 19:07:58

标签: angular

我正在从Cloud Firestore中获取数据以及在控制台中自动生成的ID 在下面的操作系统中,该代码

import { Injectable } from '@angular/core';
import 
{AngularFirestoreDocument,AngularFirestore,AngularFirestoreCollection} 
from 'angularfire2/firestore';

import { Observable } from 'rxjs';
import { Item } from '../items';
import {map} from 'rxjs/operators';  

@Injectable({
providedIn: 'root'
})
export class ItemsService {
private itemscollection:AngularFirestoreCollection<Item> 
items:Observable<Item[]>

constructor(public afs:AngularFirestore,db:AngularFirestore) { 


}

getitems(){
  this.itemscollection=this.afs.collection<Item>('categories')

 return  this.items=this.itemscollection.snapshotChanges().pipe(
    map(actions=>actions.map(a=>{
      const data=a.payload.doc.data() as Item;
      const id = a.payload.doc.id;
      console.log(data,id)
      return { id, ...data };
    }))
  )

 }

 }

这是输出的屏幕截图

https://ibb.co/tpb39gR

现在我想按名称的字母顺序排列它们 那么,我该怎么办呢?

1 个答案:

答案 0 :(得分:0)

在使用map函数之后,在代码中向用户提供javascript排序功能:

此排序功能也可以与其他数据类型一起使用。

return this.items = this.itemscollection.snapshotChanges().pipe(
    map(actions => actions.map(a => {
        const data = a.payload.doc.data() as Item;
        const id = a.payload.doc.id;
        console.log(data, id)
        return { id, ...data };
    }).sort(function (a, b) {
        /* add the following line if you need case insensetive comparison */
        var name1 = a.name.toLowercase(), name2 = b.name.toLowercase();
        if (name1 < name2) { return -1; }
        if (name1 > name2) { return 1; }
        return 0;
    })
    )
)