我是IndexedDb的新用户,我在Windows 8应用程序中使用它。我试图通过多个索引对查询结果进行排序。换句话说,我有一个对象存储库,其对象都具有日期和姓氏属性。我想先按日期排序,然后按姓氏排序。有没有办法用IndexedDB做到这一点?或者我是否必须使用JavaScript对查询结果进行排序?
答案 0 :(得分:8)
在indexeddb中,复合索引(array keyPath)用于以下多重排序:
objectStore.createIndex('date, last', ['date', 'last']);
不幸的是,IE10不支持复合索引。
答案 1 :(得分:2)
由于IE10不支持索引的数组键路径,因此您必须自己进行过滤。如果你想手动滚动它,我会专注于创建一个关于什么是你最大的键的索引(所以那个将具有最不同的值)并让IDB对此进行查询,然后编写自己的过滤器
>光标行走的onsuccess
方法中的其余项目。
或者您可以查看第三方IDB包装器,db.js具有流畅的查询API,允许您将索引查询与自定义回调过滤(see here)组合在一起。
答案 2 :(得分:1)
正如您在其他答案中看到的,IE 10(以及Windows 8应用程序)不支持数组KeyPath。这意味着您只能使用一个索引直接使用API对数据进行排序。
您可以尝试我的库linq2indexeddb,它提供了类似LINQ的接口来查询数据。它还支持多种排序。它还有一个8 nuget package窗口。