Как отсортировать значения Firebase, хранящиеся в user.uid? - PullRequest
0 голосов
/ 01 января 2019

Хорошо, я пытаюсь создать таблицу лидеров для приложения.Пользователи хранят свои «точки» в базе данных Firebase под своим идентификатором пользователя.

JSON выглядит так:

- users
  - hJfEgXkyaKPckchL3kx8rpZ58Ew2
    -LV6c8E5rRD4_mQqsb6Q
      - name: "Lin Manuel Miranda"
      - points: 120
  - mlIBrdjT8CfIURQEAhLFPzzUFQg1
    -LV7I6d8LeuWFLH5MRKy
      - name: "Emily Blunt"
      - points: 200

"mlIBrdjT8CfIURQEAhLFPzzUFQg1" и "hJfEgXkyaKPckchL3kx8rpZ58Ew2" являются соответствующими user.uid.

Как мне написать свой код, чтобы мне возвращался список их «точек» в порядке возрастания ??

Мой файл .ts и .html:

import { Component } from '@angular/core';

// firebase imports
import * as firebase from 'firebase';
import { AngularFireDatabase, AngularFireList } from '@angular/fire/database';
import { User } from 'src/models/login.interface';
import { Observable } from 'rxjs';
import { reference } from '@angular/core/src/render3';


@Component({
  selector: 'app-tab1',
  templateUrl: 'tab1.page.html',
  styleUrls: ['tab1.page.scss']
})
export class Tab1Page {
  users: Observable<any>;

  constructor(
    private db: AngularFireDatabase
  ) {
    this.users = this.db.list('/users/').valueChanges();
    const usersRef = firebase.database().ref('/users/');
    const ref = usersRef.orderByKey();

    ref.once('value').then(function(snap) {
      snap.forEach(function (childSnap) {
        const pkey = childSnap.key;
        console.log(pkey);
      });
    });
  }
}
<ion-content>
    <div class="cards" *ngFor="let user of users  | async">
      <ion-card>
          <ion-card-header>
            <ion-card-title>{{user.name}}</ion-card-title>
            <ion-card-subtitle id ="points">{{user.points}}</ion-card-subtitle>
          </ion-card-header>
      </ion-card>
  </div>
</ion-content>

На данный момент .ts возвращает идентификаторы пользователей.

Любая помощь будет очень ценится!Спасибо.

1 Ответ

0 голосов
/ 01 января 2019

Вместо

const ref = usersRef.orderByKey();

используйте

const ref = usersRef.orderByChild('points');

в вашем запросе.

Ваш угловой код огня будет обновлен следующим образом:

this.users = this.db.list('/users', ref => ref.orderByChild('points')).valueChanges()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...