2013-03-14 102 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