2016-03-19 12 views
0

私は自分のビジネス用に作成したWindowsストアアプリを持っています。私のビジネスは何ヶ月もそれを成功させてきましたが、保存されたデータを読むことで時折エラーが発生します。これらのデータの保存と読み取りエラーを最小限に抑える方法を見つけ出すことは非常に重要です。WinJS:重要な情報を保存するための最良の方法

私のアプリは本質的にはタイムシートアプリです。従業員は自分のアプリでサインインとアウトプットをすることができます。 Azureデータベースへの各シフトを保存しますが、インターネットの信頼性が低いため、シフトオブジェクトをJSON.stringify形式でlocaldataのファイルに保存します。私は(と私はかなりのシフトが開始または終了した任意の時間をファイルに書き込め)の情報を書き込むために、この機能を使用します。

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

私はアプリの再起動時にロードするための情報を読み取るために、この機能を使用します。

非常に時折、私はファイルに書き込む際にエラーが発生します。後で、アプリケーションが再起動し、ファイルの1つが非JSON.parsable形式になっているエラーについては、後で説明します。

ここで最も明白な解決策は、間違ったファイルハンドラを用意して、読み込めないファイルのデータを初期化することです。しかし、私はそれをすることはできません。なぜなら、ファイルが読めないと、それは従業員が失業した可能性のあるシフトを意味するからです。私はそれが明らかに非常に重要なので、そのデータが失われていることを知る必要があるので、私はアプリがちょうどそのまれなケースでクラッシュすることを許可しました(5ヶ月で3回起こったかもしれません)。私は他のデータ・ストレージ・ソリューションについて読んだ

、単にファイルにテキストを書くよりも、他の - 私は保存するデータの最大32KB持つことができることを考えるなどIndexDB、貯蔵容器、

、何です最も適切なオプション?データ損失を避けるにはどうしたらいいですか?

答えて

1

明らかに奇妙な解決策があります。 IndexedDBはここで最善の策かもしれません。例外の試行/キャッチなしでのデータ損失を回避する方法については不明です。

オンラインDBと比較するまでデータをローカルに保存する方法はありますか?比較を行い、次に最も良いと判断したものを使用しますか?

エンドユーザーにファイルが正しく保存されていないという警告を表示して、情報を再度入力するよう要求することはできますか?

+1

あなたの答えをありがとう。最初の場所に実際に情報を入力しなかったため、ファイルが適切に保存されていないという警告を実際に出すことはできません。情報はおそらく最終日か最後の2日間です従業員のシフトのしかし、私はIndexDBが私の最善の策かもしれないと思っています – TKoL

関連する問題