3

私はindexeddbが初めてです。インデックス付きのデータベースにいくつかのオブジェクトを配置したとしましょう:

transaction.objectStore("some_store").put(some_object, some_key);

ここで、そのオブジェクト ストアからすべてのキーを取得したいと考えています。それは可能ですか?はいの場合、どのように?

4

3 に答える 3

3

クリストフが openCursor メソッドを使用して言ったように可能です。値カーソル オブジェクトの要求には逆シリアル化が含まれる可能性があるため、効率的ではありません。

put メソッドは、挿入されたオブジェクトの主キーを返すことにも注意してください。

現在、非常に効率的なキー取得が必要な場合は、インライン キー オブジェクト ストアの keyPath にインデックスを付けます。アウト オブ ライン オブジェクト ストアの場合、運が悪いです。インデックスを使用すると、次のようにキーを取得できます。

transaction.objectStore("some_store").index('id').openKeyCursor(); // here id is primary key path

openKeyCursor メソッドを直接オブジェクト ストアに要求するバグ レポートがあります。願わくば、次の IndexedDB 仕様でそれが実装されることを願っています。

于 2013-03-15T05:12:16.137 に答える
1

すべてのレコードを 1 つずつ取得するには、openCursor メソッドを使用する必要があります。キーのみを取得することはできません。

于 2013-03-14T17:48:14.537 に答える