indexeddb按多个索引排序

时间:2013-03-10 00:44:26

标签: windows-8 indexeddb

我是IndexedDb的新用户,我在Windows 8应用程序中使用它。我试图通过多个索引对查询结果进行排序。换句话说,我有一个对象存储库,其对象都具有日期和姓氏属性。我想先按日期排序,然后按姓氏排序。有没有办法用IndexedDB做到这一点?或者我是否必须使用JavaScript对查询结果进行排序?

3 个答案:

答案 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窗口。