2013-03-10 76 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