复合索引的IE11 IDBIndex.openCursor()不返回任何结果

时间:2014-10-31 16:05:48

标签: internet-explorer indexeddb

我在IE11上遇到问题,其代码适用于Google Chrome。

在具有复合键typekey的对象存储上考虑以下查询,该键具有两个字段:type,docID

store.createIndex("typekey", [ "type", "docID" ], { unique: false });

...

idb.transaction("inbox")
    .objectStore("inbox")
    .index("typekey")
    .openCursor()
    .onsuccess = function(e) { 
      debugger;
      // e.target.result is null, even though there are records in the objectStore 
    };

使用主键考虑在同一个表上进行查询。

idb.transaction("inbox")
    .objectStore("inbox")
    .openCursor()
    .onsuccess = function(e) { 
      debugger;
      // e.target.result is an IDBCursorWithValue as expected
    };

为什么Internet Explorer在第一个实例中没有返回任何结果?

3 个答案:

答案 0 :(得分:2)

用于IE的Polyfill:

https://github.com/dfahlander/idb-iegap

...使IE表现为具有复合和多重索引的Chrome和Firefox。

答案 1 :(得分:1)

根据createIndex的参考页面,IE不支持多项索引。

Windows Dev论坛上有一个related thread,讨论了解决方法的可能方向。

希望这会有所帮助......

- Lance

答案 2 :(得分:0)

"多项索引和复合索引不是一回事。但是,IE并不支持这两种功能。" - dumbmatter 11月1日3:29

(来自下面的评论)