3

我是 indexeddb 的新手。假设我将几个对象放入索引数据库:

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

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

4

3 回答 3

3

正如 Kristof 所说,可以使用 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

您将需要使用 openCursor 方法逐个检索所有记录。仅获取密钥是不可能的。

于 2013-03-14T17:48:14.537 回答
1

有:IDBObjectStore.getAllKeys()方法,它将从对象存储中返回所有键。

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

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

缺点是在执行这些方法之间不应将任何数据添加到存储中。

于 2017-03-10T10:41:55.290 回答