私は最近、WebSQLがHTML5でサポートされなくなり、IndexedDBが代わりに代わりになることを発見しました(悲しいことに)。IndexedDBで複数の条件を使用してクエリを実行するにはどうすればよいですか?
SQLを使用して複数の条件を満たすエントリを検索する方法と同様に、IndexedDBのエントリをクエリまたは検索する方法があるかどうかは疑問です。
KeyRangeを使用して1つの条件を使用してIndexedDBを検索することができます。しかし、私は、データベースからすべてのデータを取得してforループで処理することなく、2つ以上のデータ列を検索する方法を見つけることはできません。
これはブラウザでほとんど実装されていない新しい機能だと知っていますが、私が始めているプロジェクトがあり、私はそれをやり遂げる方法を研究しています。
ありがとうございました!
P.S.私はこれをLocalStorageを使って試して、JSONエンコードされた配列を格納し、forループを使って条件をソートしました。しかし、私のテーブルは4000以上のエントリであり、それらのすべてをループするには長すぎる(おそらく)100ミリ秒以上かかる。 IndexedDBを使用した場合、複数列のクエリを実行できない限り、どのように高速化できるのか分かりません。 – jthereliable
要約:クエリを実行するプロパティで[インデックスを作成する](http://www.w3.org/TR/IndexedDB/#widl-IDBObjectStore-createIndex)する必要があります。次に、[index](http ://www.w3.org/TR/IndexedDB/#widl-IDBObjectStore-index)を呼び出してから、[openCursor](http://www.w3.org/TR/IndexedDB/#widl-IDBIndex- openCursor)メソッドを使用します。私は例を考え出すことができますが、それは私に1日かそれ以上かかるかもしれません... – robertc
応答に感謝します。私はそれをしようとしましたが、SQLのWHERE文で複数列の比較のような処理を行うために複数行インデックスをクエリする方法を見つけることができませんでした。あなたはこれについてアドバイスをしていますか? – jthereliable