список сортировки angularfire2 по дочернему значению - PullRequest
0 голосов
/ 24 мая 2018

У меня есть моя база данных Firebase, как это

"students" : {
    "-LDD0MIigieZQ3Fcaj1Z" : {
      "ContactNo" : "0752155466",
      "Email" : "sdsdsd@sdsd.com",
      "FirstName" : "Ishana",
      "Gender" : "Female",
      "LastName" : "Dahanayake",
      "Password" : "1234",
      "score" : 6
    },
    "-LDD0ceFiy2RI1avfMWA" : {
      "ContactNo" : "0752155466",
      "Email" : "232323@sdsd.com",
      "FirstName" : "Ruwan",
      "Gender" : "Male",
      "LastName" : "Perera",
      "Password" : "1234",
      "score" : 1
    }
  }

Мне нужно отсортировать этих студентов по счету

Я попробовал вот так

let ref = this.afDB.list('/students',ref=>ref.orderByChild('score')).snapshotChanges()
    .map(changes =>{
      return changes.map(c=> ({key:c.payload.key,...c.payload.val()}));
    });

    return ref;

но это не меняет порядок в соответствии со значением оценки. Как я могу отсортировать эти значения?

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Если этот код, который вы написали:

let ref = this.afDB.list('/students',ref=>ref.orderByChild('score')).snapshotChanges()
    .map(changes =>{
      return changes.map(c=> ({key:c.payload.key,...c.payload.val()}));
    });

    return ref;

возвращает вам значения, которые нужно отсортировать, я бы просто добавил return ref.sort ();

0 голосов
/ 24 мая 2018

Можете ли вы попробовать таким образом

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


@Injectable()
export class ItemService {
  itemsCollection: AngularFirestoreCollection<any>;
  items: Observable<any>;
  itemDoc: AngularFirestoreDocument<any>;

  constructor(public afs: AngularFirestore) { 

    this.itemsCollection = this.afs.collection('students', ref => ref.orderBy('score','asc'));

    this.items = this.itemsCollection.snapshotChanges().map(changes => {
      return changes.map(a => {
        const data = a.payload.doc.data();
        data.id = a.payload.doc.id;
        return data;
      });
    });
  }
...