2015-11-22 96 views
6

我花了幾個小時尋找這個,只是通過試驗和錯誤,我終於找到了解決方案。將其記錄在堆棧溢出中供未來的搜索者使用。如何創建一個indexeddb複合鍵

問:

如何創建在IndexedDB的組合鍵?

密鑰是使用以下中索引資料創建了對象存儲:

var db; 
var openRequest = indexedDB.open('myDB', 1); 
openRequest.addEventListener('error',() => { 
    console.error('Unable to open db'); 
}); 
openRequest.addEventListener('upgradeneeded', function(event){ 
    var store = db.createObjectStore('myStore', 
     {keyPath: /* composite key */ } 
    ); 
}); 
openRequest.addEventListener('success', function(){ 
    db = openRequest.result; 
}); 

我試圖將物體,定義多次,一個人如何創建複合鍵,或者是這樣的API的限制?

注:如果你正在尋找如何查詢使用範圍複合鍵,請查看this

+0

的可能的複製[在IndexedDB的,有沒有一種方法,使一個排序的複合查詢?(http://stackoverflow.com/questions/12084177/in-indexeddb-is-there-a-way-to-make -a-sorted-compound-query) – Josh

+0

@Josh雖然引用的帖子並沒有討論複合索引,但它主要關注IDBKeyRange在選擇一系列元素時。這篇文章也沒有解釋如何爲Indexeddb對象存儲創建一個組合主鍵,因此我相信這篇文章不是重複的。 – SnareChops

回答

12

答:

事實證明,答案是非常簡單,但在我看過的任何地方都沒有很好的記錄,乍一看也不明顯。使用字符串數組...

var store = db.createObjectStore('myStore', 
    {keyPath: ['id1', 'id2']} 
); 

複合索引也可以以同樣的方式來創建。