为了账号安全,请及时绑定邮箱和手机立即绑定

Firebase - Angular / 我无法使用 orderByChild 方法显示我的结果

Firebase - Angular / 我无法使用 orderByChild 方法显示我的结果

holdtom 2022-10-13 09:44:35
我有一个这样组织的用户数据库:Database - Users  - Id (determined thanks to the push method)    - email    - firstName    - ptsTotal    - ...我想使用 orderByChild 方法根据 ptsTotal(游戏中的点数)建立我的用户排名。下面是我在 Angular 中的组件:import { Component, OnInit } from '@angular/core';import {UsersService} from '../../services/users.service';import {User} from '../../models/user.model';import * as firebase from 'firebase';@Component({  selector: 'app-total',  templateUrl: './total.component.html',  styleUrls: ['./total.component.scss']})export class TotalComponent implements OnInit {  usersRanking:User[] = [];  tableau:any[];  constructor(private usersService: UsersService) { }  ngOnInit(): void {    this.getRanking();  }  getRanking(){    firebase.database().ref('/users').orderByChild('ptsTotal')    .on('value',(data)=>{      data.forEach((childSnapshot) => {        var childData = childSnapshot.val();            this.tableau.push(childData);      });    });}}这是我在控制台中的输出 我的 HTML 不工作。我使用 ngFor,页面上的结果是 6 行(我只有 4 个用户)。名字: - 姓氏: - 点数:名字: - 姓氏: - 点数:名字: - 姓氏: - 点数:名字: - 姓氏: - 点数:名字: - 姓氏: - 点数:名字: - 姓氏: - 点数:<div class="row">  <div class="col-xs-12">    <h2>Users Ranking</h2>    <div class="list-group"        *ngFor="let user of usersRanking | keyvalue async">        <p>firstName : {{user.value.firstName}} - LastName : {{user.value.lastName}} - Number of Points : {{user.value.ptsTotal}}</p>    </div>  </div></div>在此先感谢您的帮助 !
查看完整描述

1 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

使用value事件:


tableau:any[] = [];


getRanking(){

  firebase.database().ref('/users').orderByChild('ptsTotal')

  .on('value',(data)=>{

  data.forEach((childSnapshot) => {

    var childData = childSnapshot.val();

    this.tableau.push(childData);

   });

});

然后使用forEach()循环内部数据,然后将数据添加到数组tableau中,并在 html 中使用它。


查看完整回答
反对 回复 2022-10-13
  • 1 回答
  • 0 关注
  • 65 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信