2015-11-22 12 views
6

Spędziłem wiele godzin szukając tego, a tylko metodą prób i błędów udało mi się w końcu znaleźć rozwiązanie. Zalogowanie się w Stack Overflow dla przyszłych wyszukiwań.Jak utworzyć klucz kompozytowy indexeddb

Q:

Jak mogę utworzyć klucz kompozytowego w IndexedDB?

Klucze są tworzone w IndexedDB na sklepach obiektów przy użyciu następujących:

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

Próbowałem umieszczenie obiektów, definiując wiele razy, w jaki sposób można utworzyć klucz kompozytowego, lub jest to ograniczenie API?

Uwaga: Jeśli szukasz Jak zapytania kluczu złożonym przy użyciu szeregu, proszę sprawdzić this słupek

+0

Możliwy duplikat [w IndexedDB, czy istnieje sposób na sortowanie złożonego zapytania?] (Http://stackoverflow.com/questions/12084177/in-indexeddb-is-there-a-way-to-make -a-sorted-compound-query) – Josh

+0

@Josh Chociaż wspomniany post mówi o indeksie złożonym, koncentruje się przede wszystkim na IDBKeyRange przy wyborze zakresu elementów. Post nie wyjaśnia również, jak utworzyć złożony klucz podstawowy dla magazynu obiektów Indexeddb i dlatego uważam, że ten post nie jest duplikatem. – SnareChops

Odpowiedz

12

A:

Jak się okazuje, odpowiedź brzmi: bardzo proste, ale nie udokumentowane, gdziekolwiek spojrzałem, i nie było to oczywiste na pierwszy rzut oka. Użyj tablicy łańcuchów ...

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

Indeksy złożone można również tworzyć w ten sam sposób.

Powiązane problemy