2

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

4

3 回答 3

8

在 indexeddb 中,复合索引(数组 keyPath)用于如下多重排序:

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

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

于 2013-03-10T01:03:27.947 回答
2

由于 IE10 不支持索引的数组键路径,因此您必须自己进行过滤。如果您想手动滚动它,我将专注于创建一个索引,该索引将是您最大的键(因此具有最大不同值的键)并让 IDB 对此进行查询,然后编写您自己的过滤器onsuccess光标行走方法内的其余项目。

或者,您可以查看第 3 方 IDB 包装器来执行此操作,db.js有一个流畅的查询 API,它允许您将索引查询与自定义回调过滤结合起来(参见此处)。

于 2013-03-10T23:39:52.513 回答
1

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

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

于 2013-03-11T09:27:35.067 回答