2013-03-14 103 views
3

我是indexeddb的新手。 比方说,我把几个对象为索引数据库:indexeddb从对象存储获取所有密钥

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

现在我想从该对象存储的所有按键。那可能吗?如果是,如何?

回答

1

您将需要使用openCursor方法来检索al记录1.只有获取密钥是不可能的。

+0

我问的是关键字,而不是数值。 – mnowotka 2013-03-14 17:48:49

+0

我知道,但没有使用索引是不可能的,但如果你问我,将索引放在对象存储的keypath上并不是最好的办法。 Bur你可以像kyaw sais那样做 – 2013-03-15 07:14:59

3

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

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

当前,如果您想要非常高效的密钥回收,请为内嵌密钥对象库的keyPath编制索引。对于线外对象商店,您运气不佳。使用索引,你可以retrive键如下:

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

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

+0

看起来像去年1月的bug报告[已更新](https://github.com/w3c/IndexedDB/commit/0f168cc96e38441b9131124786992589fbdb0388)。 – cregox 2015-11-29 02:13:56