indexeddb从对象库获取所有键

时间:2013-03-14 16:05:37

标签: javascript html5 indexeddb persistent-object-store

我是indexeddb的新手。 假设我将几个对象放到索引db:

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

现在我想从该对象存储中获取所有密钥。那可能吗?如果是,怎么样?

3 个答案:

答案 0 :(得分:3)

可能正如Kristof所说,使用openCursor方法。它效率不高,因为请求值游标对象可能涉及反序列化。

您还应该注意,put方法返回插入对象的主键。

目前,如果您想要非常有效的密钥重试,请为内联键对象存储索引keyPath。对于外线对象商店,你运气不好。使用索引,您可以按如下方式检索密钥:

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

有一个bug report用于直接请求openKeyCursor方法对象存储。希望下一个IndexedDB规范能有它。

答案 1 :(得分:1)

您需要使用openCursor方法来检索1个记录1.只能获取密钥。

答案 2 :(得分:1)

IDBObjectStore.getAllKeys()方法,该方法将从对象库中返回所有键。

有关此方法的详细信息,请参阅:https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore/getAllKeys

您可以将其与 IDBObjectStore.getAll()方法一起使用并合并结果。

缺点是在执行这些方法之间不应该向商店添加数据。