1

私は、Surfaceおよびその他のWin8タブレットで実行されるWinJSMetroアプリを構築しています。IndexedDBを使用して、サーバーに送信する前にローカルデータを保存します。配布には、おそらくSideLoadingまたはエンタープライズ配布を使用し、Storeは避けます。テストのために、APPパッケージを作成し、同僚に送信しています。 問題1:app-packageをインストールするたびに、データベースとオブジェクトストアが再作成されますが、古いデータを保持するために既存のデータベースとオブジェクトストアを使用します。 問題2-私の意図は、オブジェクトストアの構造を作成し、いくつかのマスターデータをバンドルし、インストールパッケージと一緒に配布することです。私は今コードを通してそれをいくらか達成することができますが、dbコンポーネントを分離することはできません。 問題3-すべてのデータベース、オブジェクトストア、構造、およびデータを表示できる、win8用の適切なインデックス付きデータベースビューアをまだ見つけていません。

前もって感謝します ...

4

4 に答える 4

1

私は、デバッグするための一種のビューアーを内部に含む、indexeddb に関する lib を作成しました。codeplex で見つけることができます: linq2indexed。ナゲットパッケージも付いています。使い方の記事も書いています。

私は Web で動作するビューアーも持っていますが、Windows 8 には移植していません。ビューアーは、codeplex の nuget en からも見つけることができます。ビューアの詳細については、この投稿をご覧ください。

これがさらに役立つことを願っています。コメント、改善点などは大歓迎です。

于 2013-01-21T08:33:24.147 に答える
1

したがって、ここで解決しようとしている問題がいくつかあります。

問題1

アプリをサイドロードすると、新しいアプリのインストールが作成され、アプリが提供される新しいパスが作成されます。IndexedDB はアプリケーションのドメインに関連付けられているため、破棄されます (WinJS は、技術的には新しいドメインではありませんが、提供される新しい場所であるため、少し特殊です)。

私の理解では、ストアがアプリをインストールする方法は、アプリケーション パッケージが更新される方法により、これをトリガーしません。残念ながら、これはパッケージのサイドローディングを避けることができない問題だと思います。

問題 2

Microsoft は実際に IndexedDB (小さな JS ライブラリ) をデバッグするための UI を提供しており、これはブログに掲載されていました。私は個人的にそれを使用していませんが、他に適切なラッパーがない場合は、出発点として適しています。

問題 3

データベースの初期ロードを行うには、次のプロセスを実行します。

  • onupgradeneededイベントを聞く
  • アプリで提供された JSON ファイルを読み込むイベント ハンドラーで、または JS ファイルにデータを埋め込みます (サイズによって異なります)。

このようにして、異なるバージョンのデータベース (さらにはアプリ) に対して異なるバージョンのデータを持つことができます。

于 2013-02-19T05:35:30.570 に答える
0

インデックス付きの DB データを「事前にバンドル」するには、ディスクからデータを JSON 形式でロードするバルク インポーターを作成し、必要に応じてデータを追加して反復処理することをお勧めします。Kristof の linq2indexed、または私のdb.js反復は、これに適しています。

于 2013-01-21T16:20:17.747 に答える
0

アプリのリリースに indexedDB インスタンスがアタッチされているようです。たとえば、同じマシン (私の開発ボックス) には、バージョン 1.0.0.5 と 1.0.0.7 があります。どちらも異なる indexeddb ストアと異なるデータ セットを使用します。また、バージョンに関連するデータベースをアンインストールすると、インストールも解除されます。また、同じバージョンを上書きモードでインストールすることはできないと思います (間違っていたら訂正してください)。私はそのような実装の根底にあるロジックを理解していますが、これは基本的に、永続的なデータが初期化されるため、アプリにパッチをリリースできないことを意味します。

SQLite を使用してそれを行うことはできますか? もしそうなら、私はその道をたどる必要があります...

于 2013-01-29T02:54:06.653 に答える