我是indexeddb的新手。 假设我将几个对象放到索引db:
transaction.objectStore("some_store").put(some_object, some_key);
现在我想从该对象存储中获取所有密钥。那可能吗?如果是,怎么样?
答案 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()方法一起使用并合并结果。
缺点是在执行这些方法之间不应该向商店添加数据。