2015-11-22 9 views
6

Ich verbrachte Stunden damit, nach diesem zu suchen, und nur durch Versuch und Irrtum konnte ich schließlich die Lösung finden. Protokollieren dies in Stack-Überlauf für zukünftige Forscher.Wie erstelle ich einen indexeddb zusammengesetzten Schlüssel

Q:

Wie kann ich einen zusammengesetzten Schlüssel in IndexedDB erstellen?

Schlüssel werden in IndexedDB auf Objektspeicher erstellt unter Verwendung der folgenden:

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; 
}); 

habe ich versucht, Objekte platzieren, mehrere Male zu definieren, wie man einen zusammengesetzten Schlüssel schafft, oder ist dies eine Einschränkung der API?

Hinweis: Wenn Sie suchen, wie man Abfrage ein Verbundschlüssel einen Bereich verwenden, lesen Sie bitte this Post

+0

Mögliches Duplikat [In IndexedDB, ist es eine Möglichkeit, eine sortierte Verbindung Abfrage zu machen?] (Http://stackoverflow.com/questions/12084177/in-indexeddb-is-there-a-way-to-make -a-sortiert-Verbindung-Abfrage) – Josh

+0

@ Josh Obwohl die referenzierte Post nicht über einen Composite-Index spricht, ist es in erster Linie auf dem IDBKeyRange fokussiert eine Reihe von Elementen in der Auswahl. Die Post auch nicht erklären, wie man einen zusammengesetzten Primärschlüssel für einen IndexedDB Objektspeicher zu schaffen, und deshalb glaube ich dieser Beitrag nicht ein Duplikat zu sein. – SnareChops

Antwort

12

A:

Wie sich herausstellt, ist die Antwort sehr einfach, aber nirgends gut dokumentiert, wo ich gesucht habe und nicht auf den ersten Blick. Verwenden Sie ein Array von Zeichenfolgen ...

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

Zusammengesetzte Indizes können auch auf die gleiche Weise erstellt werden.