2015-11-22 34 views
6

これを検索するのに何時間も費やしていましたが、試行錯誤だけで最終的に解決策を見つけることができました。将来のサーチャーのためにStack Overflowでこれを記録する。indexeddb複合キーを作成するには

Q:私はの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; 
}); 

私は複数回定義し、オブジェクトを配置しようとしている、どのように1は、複合キーを作成、またはこれは、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

A:それは結局のところ

、答えは非常にシンプルですが、私が見たところでどこにでも文書化されていません。文字列の配列を使用してください。

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

複合インデックスは、同じ方法で作成することもできます。