2017-11-22 2 views
0

Also im Grunde die onSnapshot Handler auf einer Firestor Dokument/Sammlung Referenz:AngularFire2 v5 Firestor - Wie die Fehler Rückruf bei „onSnapshot“ hook up

ref.onSnapshot(query => {}, error => {}, complete => {}) 

Ich sehe nicht, wie es in AF2 angeschlossen ist . Die Firestore-Dokumentation betont, dass die verschiedenen Fehler behandelt werden müssen, die bei diesem Rückruf auftreten.

Macht es einfach auf den entsprechenden Betrag in RxJS Land übersetzen:

this.afDb.collection('my_collection') 
    .valueChanges() 
    .retry(); 

Sehen als mein Eckige 5 Dienste Singletons sind, ich würde es vorziehen, wenn ihre aktiven Daten Hörer (Observable) aus nicht irren wegen Fehler während der Beta. Das ist die Hauptsorge.

Antwort

1

Um Wiederholung zu implementieren, müssen Sie fangen und dann den Fehler werfen.

export class AppComponent { 
    constructor(afs: AngularFirestore) { 
    afs.doc<{}>('items/three') 
     .snapshotChanges() 
     .map(action => action.payload.data()) 
     .catch(e => Observable.throw(e)) 
     .retry(2) 
     .subscribe(
     snap => console.log(snap), 
     err => console.log(err, 'Retried a few times') 
    ); 
    } 
} 

Im Beispiel oben Ich versuche, items/three zu einem nicht vorhandenen Dokument zu hören. Der Aufruf von .data() vor dem Aufruf .exists() auf einem nicht vorhandenen DocumentSnapshot wird einen Fehler auslösen. I .catch() und dann den Fehler werfen. Unter Verwendung von .retry(2) versucht RxJS es zwei weitere Male vor dem Aufruf des Fehlerrückrufs in der .subscribe() Methode.

+0

Danke für Ihre Antwort. Müssen Sie sogar fangen - neu stricken? Die Wiederholung sollte den Fehler an erster Stelle fangen, richtig? – DarkNeuron

Verwandte Themen