我正在从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 };
}))
)
}
}
这是输出的屏幕截图
现在我想按名称的字母顺序排列它们 那么,我该怎么办呢?
答案 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;
})
)
)