2016-03-19 10 views
0

Ich habe eine Windows Store App, die ich für mein Unternehmen erstellt habe. Mein Unternehmen verwendet es seit Monaten erfolgreich, aber wir bekommen gelegentlich Fehler beim Lesen gespeicherter Daten. Es ist sehr, sehr wichtig, dass ich einen Weg finde, diese Datenspar- und Lesefehler zu minimieren.WinJS: Beste Möglichkeit, wichtige Informationen zu speichern

Lassen Sie mich konkret sein: Meine App ist im Wesentlichen eine Timesheet-App: Ein Mitarbeiter kann sich mit meiner App an- und abmelden. Ich speichere jede Schicht in eine Azure-Datenbank, aber wegen des unzuverlässigen Internets speichere ich die Verschiebungsobjekte in einer Datei in den lokalen Daten im Format JSON.stringify. Ich benutze diese Funktion, um die Informationen zu schreiben (und ich schreibe ziemlich jedes Mal, wenn eine Verschiebung in Datei gestartet oder beendet):

  jsonWrite: function (fileName, object) { 
       return localFolder.createFileAsync(fileName, Windows.Storage.CreationCollisionOption.openIfExists) 
        .then(function (file) { 
         return Windows.Storage.FileIO.writeTextAsync(file, JSON.stringify(object)); 
        }) 
      } 

ich diese Funktion verwenden, um die Informationen zum Laden zu lesen, wenn die App wieder anläuft:

  jsonRead: function (fileName) { 
       return localFolder.createFileAsync(fileName, Windows.Storage.CreationCollisionOption.openIfExists) 
        .then(function (file) { 
         return Windows.Storage.FileIO.readTextAsync(file) 
        }) 
        .then(function(text) { 
         return text ? JSON.parse(text) : null; 
        }) 
      }, 

Nur sehr selten bekomme ich einen Fehler beim Schreiben in Datei. Ich erfahre den Fehler später, wenn die App neu gestartet wird und eine der Dateien in einem nicht-JSON.parsable-Format vorliegt.

Nun ist die offensichtlichste Lösung - aber die falsche - eine Art Fehlerbehandlung für eine falsche Datei zu haben, die die Daten für eine Datei initialisiert, die sie nicht lesen kann. Aber ich kann das nicht machen, denn wenn eine Datei nicht lesbar ist, bedeutet das, dass möglicherweise Verschiebungen, an denen die Mitarbeiter gearbeitet haben, verloren gegangen sind - ich kann nicht einfach stillschweigend dort versagen; Ich muss wissen, dass diese Daten verloren gegangen sind, weil es offensichtlich sehr wichtig ist. Bisher habe ich die App einfach in den seltenen Fällen abstürzen lassen, in denen das passiert (es ist vielleicht dreimal in 5 Monaten passiert).

ich über andere Datenspeicherlösungen gelesen haben, andere als nur Text in eine Datei schreiben - IndexDB, Lagerbehälter etc.

Da ich bis zu 32 KB Daten haben könnte zu retten, was ist das am besten geeignete Option? Und wie vermeide ich Datenverlust?

Antwort

1

Definitiv eine seltsame Lösung zu haben. IndexedDB könnte hier die beste Wahl sein. Nicht sicher, wie Sie den Datenverlust ohne Try/Catch für die Ausnahme vermeiden können.

Gibt es eine Möglichkeit, die Daten lokal zu speichern, bis Sie sie mit der Online-DB vergleichen können, einen Vergleich durchführen und dann das verwenden, was Sie für am besten halten?

Ist es möglich, eine Warnung an den Endbenutzer zu senden, dass die Datei nicht richtig gespeichert wurde, und sie aufgefordert wird, die Informationen erneut einzugeben?

+1

Danke für Ihre Antwort. Es gibt keine Möglichkeit, wirklich eine Warnung auszugeben, dass die Datei nicht richtig gespeichert wurde, damit sie die Informationen erneut eingeben können, weil sie die Informationen nicht wirklich 'eingegeben' haben - die Informationen sind vielleicht der letzte Tag oder die letzten 2 Tage von Schichten der Angestellten. Aber ich denke IndexDB könnte meine beste Wette sein – TKoL

Verwandte Themen