私は IndexedDb が初めてで、Windows 8 アプリで使用しています。クエリの結果を複数のインデックスで並べ替えようとしています。つまり、すべてのオブジェクトが日付と姓のプロパティを持つオブジェクト ストアがあります。最初に日付で並べ替え、次に姓で並べ替えます。IndexedDB でこれを行う方法はありますか? または、クエリの結果を JavaScript で並べ替える必要がありますか?
3 に答える
indexeddb では、複合インデックス (配列 keyPath ) は、次のような複数の並べ替えに使用されます。
objectStore.createIndex('date, last', ['date', 'last']);
残念ながら、IE10 は複合インデックスをサポートしていません。
IE10 はインデックスの配列キーパスをサポートしていないため、フィルターを自分で行う必要があります。ハンドロールしたい場合は、最大のキー(最も異なる値を持つキー)にインデックスを作成し、IDBにそれに対してクエリを実行させ、それに対して独自のフィルターを作成することに焦点を当てますonsuccess
カーソル移動のメソッド内の残りの項目。
別の方法として、サードパーティの IDB ラッパーを調べて実行することもできます。db.jsには、インデックス クエリとカスタム コールバック フィルタリングを組み合わせることができる流暢なクエリ API があります (こちらを参照)。
他の回答でわかるように、IE 10 (および Windows 8 アプリ) は配列キーパスをサポートしていません。つまり、API を直接使用してデータを並べ替えるには、1 つのインデックスしか使用できません。
私のライブラリlinq2indexeddbを試すことができます。これは、データをクエリするための LINQ のようなインターフェイスを提供します。複数ソートにも対応しています。そのための Windows 8 nuget パッケージもあります。