2016-05-18 7 views
1

は私がのIndexedDBは次のようにアイテムを保持しているモックアップ持っている:IndexedDBのIDBKeyRange.bound関数で正しい結果を取得できないのはなぜですか?

{ 
id:1002, 
name:"Frank", 
company: "dg", 
age:30 
} 

そして、私は、インデックスを作成しました[「名前」、「年齢」、「会社」]は、単に結果を取得したいです私はwebsqlのようにする必要があります。

getMultipleDataByRangeアイテムを取得するために定義された関数は、私は私はそれが24歳だ項目に一致する私に結果が表示されるはずと思っプラスその会社「EF」で、upperBoundとしてlowerBound['z',24,'ef']として['0',24,'ef']を設定します。しかし、結果は、すべての項目が私が設定した範囲を満たしていることを示しています。どのようにして正しい結果を得るための範囲を設定できますか?

コードもJSBINリンクで確認することができ、私は、生成された:

http://jsbin.com/sinuxa/edit?js,console

答えて

3

を(名前を)異なる部分が最後であるように、あなたのインデックスの順序を変更する場合、それは動作します。理由を知りたい場合は、In IndexedDB, is there a way to make a sorted compound query?を参照して、複合インデックスがIndexedDBでどのように機能するかについて説明してください。

+0

ありがとうございました、私は前に述べたQ&Aを見ました。私は、異なる条件を満たすために、より異なる順序付けられたインデックスを作成しないようにするために、インデックスの順序を変更せずに最終結果を得る方法があるかどうかだけ疑問に思った。 – Jin

+0

さらに、私はこのリンク(https://gist.github.com/inexorabletash/704e9688f99ac12dd336)で "N次元の方法"をチェックしますが、文字列が混在していると動作しないと思います。文字列の範囲を設定します。また、さまざまな配列の各条件の結果を保存してから交差点を取得するなど、いくつかの醜い方法を確認しました。 dbが大きくなると、それはエレガントで非能率的ではありません。 – Jin

+0

その要点(私は著者です)は、あなたのケースでうまくいくはずです。文字列の範囲を設定することは微妙だと言います。 "任意の文字列"の場合は、[]を使用することができます(空の文字列が最初にあり、配列は任意の文字列よりも高くなります。 \ uFFFFが有効であれば、https://gist.github.com/inexorabletash/5462871の後継トリックを使用する必要があります) –

関連する問題