【发布时间】:2020-06-12 04:16:01
【问题描述】:
我正在使用 firebase 和 Angular,这是我的用户数据库:
我想按“ptsTotal”对我的用户进行排序。
我有一个带有函数 getUsersByPoints 的 users.service。但是当我使用它时,控制台会返回给我: this.users.sort 不是函数。
我看不出我在哪里做错了。你能帮我找出错误或给我另一个解决方案来对我的用户进行排序吗?
非常感谢,
import { Injectable } from '@angular/core';
import {User} from '../models/user.model';
import {Subject} from 'rxjs/Subject';
import * as firebase from 'firebase';
@Injectable({
providedIn: 'root'
})
export class UsersService {
users: User[] = [];
usersSubject = new Subject<User[]>();
constructor() { }
emitUsers(){
this.usersSubject.next(this.users);
}
saveUsers(){
firebase.database().ref('/users').set(this.users);
}
getUsers(){
firebase.database().ref('/users')
.on('value',(data)=>{
this.users = data.val() ? data.val() : [];
this.users.sort((a,b)=>a.ptsTotal-b.ptsTotal);
this.emitUsers();
});
}
【问题讨论】:
-
看起来firebase正在将this.users变成一个对象,所以它的原型将不再包含排序。
标签: javascript angular firebase firebase-realtime-database