2013-03-10 151 views
2

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

回答

8

在索引资料,综合指数(array keyPath)用于这样的多个分类如下:

objectStore.createIndex('date, last', ['date', 'last']); 

不幸的是,IE10不支持复合索引。

2

由于IE10不支持索引的数组关键路径,因此您必须自行进行过滤。如果你想手动推送它,我会专注于创建一个关于什么是最重要的关键字的索引(因此它将具有最不同的值),并让IDB根据这个关键字进行查询,然后编写自己的过滤器在光标行走的onsuccess方法里面的其余项目。

或者,您可以查看第三方IDB包装,db.js有一个流畅的查询API,它允许您将索引查询与自定义回调过滤(see here)结合起来。

1

正如你在其他答案中看到的那样,IE 10(以及Windows 8应用程序)不支持数组KeyPaths。这意味着您只能使用一个索引直接使用API​​对数据进行排序。

你可以试试我的库linq2indexeddb,它提供了一个类似LINQ的接口来查询数据。它也支持多种排序。它也有一个Windows 8 nuget package