2017-08-14 1 views
0

Was ich verwendeAngular & Firebase - ist es möglich, eine Abfrage in einem Resolver zu verwenden?

  • Angular
  • Firebase

Was ich versuche

  • Ausstellungsstücke in der Reihenfolge des Datums (einen Schlüssel zu erreichen in Firebase "project_date". Siehe Screenshot des Knotens Titel) enter image description here

Probleme

  • Ich bin derzeit mit einem Resolver meine Artikel zurück
  • Ist es möglich, eine Abfrage/Art in mein Resolver zu fusionieren?

Meine Projektliste Resolver

import { Injectable } from '@angular/core'; 
 
import { AngularFireDatabase } from 'angularfire2/database'; 
 
import { AuthService } from '../../user/auth.service'; 
 
import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; 
 
import 'rxjs/add/operator/first'; 
 
import { Observable } from 'rxjs/Observable'; 
 

 
@Injectable() 
 

 
export class ProjectsListResolver { 
 

 
    constructor(private database: AngularFireDatabase, private authService: AuthService) { } 
 

 
    
 
    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> { 
 

 
    return Observable.create(observer => { 
 

 
     this.authService.user 
 
     .first() 
 
     .subscribe(user => { 
 
      this.database.list(`/project_list/${user.uid}`) 
 
      .first() 
 
      .subscribe(projectList => { 
 
       observer.next(projectList); 
 
       observer.complete(); 
 
      }); 
 
     }); 
 
    }); 
 
    } 
 

 
}

Projekte Komponente TS

ngOnInit() { 
 

 
    // Returns the data from the projects list resolver 
 
    this.activatedRoute.data 
 
     .subscribe((
 
     data: { projectListData: any }) => { 
 
     this.projectsList = data.projectListData; 
 
     }); 
 
    }

Jede Hilfe würde sehr geschätzt werden!

Antwort

0

Ich mache das mit meiner Anwendung. Vor allem, wenn Sie die Daten von der Firebase erhalten, ist es json, also müssen Sie es in Array ändern, dann müssen Sie das Array nach Datum sortieren. Dies ist die Sortierfunktion:

arr.sort((a: any [], b: any []) => { 

     return (new Date (a[0]) .getTime() - new Date (b[0]).getTime()) ; 
     }); 

Wenn Sie den vollständigen Code möchten, kann ich es buchen.

+0

Hey Zahmed. Danke für die schnelle Antwort. Wenn es Ihnen nichts ausmacht, wäre das großartig. Ich bin außergewöhnlich neu, also ist es ein kleiner Schritt Lernkurve, wie es mit meinem Code oben integrieren wäre fantastisch danke. Ich habe gerade meinen Beitrag aktualisiert, um Code aus meiner Projektkomponentendatei einzufügen, wenn das dazu beiträgt, dass dies insgesamt funktioniert. – MegaTron

+0

Siehe die Zeiterfassungsklasse, gibt es eine Funktion namens AttendanceTime() .... Dies ist der Link: https://github.com/AhmadZeid10/HRSystem/tree/master/src/app/manger – ZAhmed

+0

Danke @ZAhmed. Schätzen Sie den Code. Das ist leider etwas fortgeschritten für mich. (Ich habe erst vor einem Monat mit dem Zeug angefangen.) – MegaTron

Verwandte Themen