如何使用复合键的IndexedDB计数方法?

时间:2013-10-30 15:05:46

标签: google-chrome indexeddb

我有一个带有keypath [“feed_id”,“item_id”]的IDB对象存储“feeditems”,插入os.put({feed_id:1,item_id:2,text:"foo"});的对象工作正常。

现在我想得到feed_id为13的所有feeditems的数量。问题是即使https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore上通常很好的MDN文档也只说关键参数是“键或键范围用于标识要计算的记录。“,但是os.count({feed_id:13})失败且出现DataError异常”参数不是有效密钥。“。

那么,如何使用feed_id == x得到所有项目的计数(以及后来如何迭代)?

请注意,唯一性仅适用于feed_id和item_id - 很可能是一个条目{feed_id:1,item_id:1},另一个条目{feed_id:2,item_id:1}!

1 个答案:

答案 0 :(得分:1)

您仍需要索引要查询的字段feed_id。然后计算索引。复合索引与此查询无关。

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