Baseline Widely available
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die createIndex()
Methode der IDBObjectStore
Schnittstelle erstellt und gibt ein neues IDBIndex
Objekt in der verbundenen Datenbank zurück. Sie erstellt ein neues Feld/Spalte, das einen neuen Datenpunkt für jeden Datenbanksatz definiert, der darin enthalten sein soll.
Bedenken Sie, dass IndexedDB-Indizes jede JavaScript-Datentyp enthalten können; IndexedDB verwendet den Structured Clone Algorithmus, um gespeicherte Objekte zu serialisieren, was die Speicherung einfacher und komplexer Objekte ermöglicht.
Beachten Sie, dass diese Methode nur aus einem VersionChange
-Transaktionsmodus-Callback aufgerufen werden darf.
createIndex(indexName, keyPath)
createIndex(indexName, keyPath, options)
Parameter
indexName
Der Name des zu erstellenden Indexes. Beachten Sie, dass es möglich ist, einen Index mit einem leeren Namen zu erstellen.
keyPath
Der Schlüsselpfad, den der Index verwenden soll. Beachten Sie, dass es möglich ist, einen Index mit einem leeren keyPath
zu erstellen, und es auch möglich ist, eine Sequenz (Array) als keyPath
zu übergeben.
options
Optional
Ein Objekt, das die folgenden Eigenschaften enthalten kann:
unique
Wenn true
, wird der Index keine doppelten Werte für einen einzelnen Schlüssel zulassen. Der Standardwert ist false
.
multiEntry
Wenn true
, fügt der Index für jedes Array-Element einen Eintrag im Index hinzu, wenn der keyPath
auf ein Array auflöst. Wenn false
, wird ein einziger Eintrag hinzugefügt, der das Array enthält. Der Standardwert ist false
.
locale
Nicht standardisiert Veraltet
Erlaubt Ihnen, eine Locale für den Index anzugeben. Alle Sortiervorgänge, die auf den Daten über Schlüsselbereiche ausgeführt werden, folgen dann den Sortierregeln dieser Locale. Sie können ihren Wert auf drei Arten angeben:
string
: Eine Zeichenkette mit einem spezifischen Localecode, z. B. en-US
oder pl
.auto
: Die plattformspezifische Locale wird verwendet (kann durch Browsereinstellungen geändert werden).null
oder undefined
: Wenn keine Locale angegeben ist, wird die normale JavaScript-Sortierung verwendet â nicht lokaalspezifisch.Ein IDBIndex
Objekt: der neu erstellte Index.
Diese Methode kann einen DOMException
der folgenden Typen auslösen:
ConstraintError
DOMException
Wird ausgelöst, wenn ein Index mit demselben Namen bereits in der Datenbank existiert. Indexnamen sind groÃ-/klein-schreibungssensitiv.
InvalidAccessError
DOMException
Wird ausgelöst, wenn der angegebene Schlüsselpfad eine Sequenz ist und multiEntry
im objectParameters
-Objekt auf true
gesetzt ist.
InvalidStateError
DOMException
Wird ausgelöst, wenn:
versionchange
Transaktionsmodus-Callback aufgerufen wurde, d.h. von innerhalb eines onupgradeneeded
Handlers.SyntaxError
DOMException
Wird ausgelöst, wenn der angegebene keyPath
kein gültiger Schlüsselpfad ist.
TransactionInactiveError
DOMException
Wird ausgelöst, wenn die Transaktion, zu der dieses IDBObjectStore
gehört, nicht aktiv ist (z. B. wurde gelöscht oder entfernt). In Firefox vor Version 41 wurde in diesem Fall ebenfalls ein InvalidStateError
ausgelöst, was irreführend war; dies wurde jetzt behoben (siehe Firefox Bug 1176165).
Im folgenden Beispiel sehen Sie den onupgradeneeded
Handler, der verwendet wird, um die Datenbankstruktur zu aktualisieren, wenn eine Datenbank mit einer höheren Versionsnummer geladen wird. createIndex()
wird verwendet, um neue Indizes im Objektspeicher zu erstellen. Für ein vollständiges Arbeitsbeispiel siehe unsere To-do Notifications App (Beispiel live ansehen).
let db;
// Let us open our database
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
// Two event handlers for opening the database.
DBOpenRequest.onerror = (event) => {
note.appendChild(document.createElement("li")).textContent =
"Error loading database.";
};
DBOpenRequest.onsuccess = (event) => {
note.appendChild(document.createElement("li")).textContent =
"Database initialized.";
// store the result of opening the database in the db variable.
// This is used a lot below.
db = request.result;
// Run the displayData() function to populate the task list with
// all the to-do list data already in the IDB
displayData();
};
// This handler fires when a new database is created and indicates
// either that one has not been created before, or a new version
// was submitted with window.indexedDB.open(). (See above.)
// It is only implemented in recent browsers.
DBOpenRequest.onupgradeneeded = (event) => {
const db = event.target.result;
db.onerror = (event) => {
note.appendChild(document.createElement("li")).textContent =
"Error loading database.";
};
// Create an objectStore for this database
const objectStore = db.createObjectStore("toDoList", {
keyPath: "taskTitle",
});
// define what data items the objectStore will contain
objectStore.createIndex("hours", "hours", { unique: false });
objectStore.createIndex("minutes", "minutes", { unique: false });
objectStore.createIndex("day", "day", { unique: false });
objectStore.createIndex("month", "month", { unique: false });
objectStore.createIndex("year", "year", { unique: false });
objectStore.createIndex("notified", "notified", { unique: false });
};
Spezifikationen Browser-Kompatibilität Siehe auch
IDBDatabase
IDBTransaction
IDBKeyRange
IDBObjectStore
IDBCursor
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4