2017-11-18 5 views
0

Ich bin auf der Suche nach einer Methode, um einem Benutzer meiner Firebase/Firestore Web App, wenn offline, Feedback zu geben. Lass uns Code sehen.Firestore web save data offline feedback

var colRef = db.collection('collectionName').doc('anyDoc'); 
var setWithMerge = colRef.set({ 
    'value': 'someValue', 
}, { 
    merge: true 
}) 
.then(function() { 
    alert('Success'); 
}) 
.catch(function (error) { 
    alert("Fail :" + error); 
}); 

Online: Rufen Sie die Funktion, und der Erfolg Alarm funktioniert perfekt.

Offline: Rufen Sie die Funktion, und nichts passiert. Wenn der Benutzer jedoch online geht, zeigt die App alle Warnungen nacheinander an.

Kurz gesagt, der .then Teil des Codes läuft nur online. Ich brauche eine Art Feedback für Offline-Benutzer.

Antwort

0

Was Sie sehen, ist das erwartete Verhalten. Lokale Schreiboperationen schlagen nicht regelmäßig fehl, daher gibt es keinen Beendigungshandler für sie. Wenn Sie etwas zu tun, nachdem der lokale Schreibvorgang abgeschlossen ist, verwenden Sie nur normale Codierung Logik und setzen sie nach dem set:

var colRef = db.collection('collectionName').doc('anyDoc'); 
var setWithMerge = colRef.set({ 
    'value': 'someValue', 
}, { 
    merge: true 
}) 
alert("Value set"); 
+0

Aber können Sie absolut sicher sein, dass selbst der lokale Schreibvorgang an dieser Stelle beendet ist? Werden die Daten vor dem (nicht erfüllten) Versprechen zurückgegeben? – DarkNeuron

+0

Was ich beschrieben habe, ist wie sich das System verhalten soll. Wenn Sie ein Verhalten finden, das in Konflikt mit dem steht, was ich gesagt habe, schreiben Sie bitte oder [melden Sie einen Fehlerbericht] (https://firebase.google.com/support/contact/bugs-features/). –

+0

Wir haben nicht, nur neugierig. Gut zu wissen, wie es funktionieren sollte. – DarkNeuron

0

Thx @Frank, @Blackwood. Ich habe die Benachrichtigungen für eine nicht blockierende Benachrichtigung geändert.

Online: Rufen Sie die Funktion, und startet 2 fast gleichzeitig (zwischengespeichert und online).

Offline: Rufen Sie die Funktion, startet 1 benachrichtigen und wenn Benutzer online geht, zeigt die App alle online hängende benachrichtigt in einer Zeile.

Ein sehr akzeptables Verhalten. Ich spreche kein Englisch, verzeih meine Fehler.

Verwandte Themen