2013-10-30 13 views
0

我有一個IDB對象存儲「keyite」與keypath [「feed_id」,「item_id」],插入對象與os.put({feed_id:1,item_id:2,text:"foo"});工作正常。如何使用帶複合鍵的IndexedDB計數方法?

現在我想知道feed_id爲13的所有feeditems的數量。問題是,即使通常良好的MDN文檔https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore也只是說關鍵參數是「標識的關鍵或鍵範圍要記錄的記錄「,但os.count({feed_id:13})失敗,出現DataError異常」參數不是有效密鑰「。

那麼,如何獲得feed_id == x的所有項目的計數(以及後來的,如何迭代)?

請注意,唯一性僅適用於feed_id和item_id - 可能有{entry_id:1,item_id:1}和{feed_id:2,item_id:1}之一的條目!

回答

1

您仍然需要索引要查詢的字段feed_id。然後計算指數。複合索引與此查詢無關。

var index = objectStore.index('feed_id'); 
var req = index.count(IDBKeyRange.only(13); 
+0

試圖在http://readme.fm/foo.php,但它不工作 - 在Chrome的檢查看時,該「feeditems」對象存儲中有6個項目,但兩個指數都是空:/ – Skynet

+0

哦,忘了我說的。 jquery.indexeddb與IndexedDB API規範不太一致(並且不支持範圍計數)。 – Skynet