Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

IDBIndex

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨Juli 2015⁩.

* Some parts of this feature may have varying levels of support.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die IDBIndex-Schnittstelle der IndexedDB-API bietet asynchronen Zugriff auf einen Index in einer Datenbank. Ein Index ist eine Art Objekt-Store zum Nachschlagen von Datensätzen in einem anderen Objekt-Store, dem sogenannten referenzierten Objekt-Store. Diese Schnittstelle wird verwendet, um Daten abzurufen.

Sie können Datensätze in einem Objekt-Store über den Primärschlüssel oder mittels eines Indexes abrufen. Ein Index ermöglicht es Ihnen, Datensätze in einem Objekt-Store mithilfe von Eigenschaften der Werte in den Objekt-Store-Datensätzen neben dem Primärschlüssel nachzuschlagen.

Der Index ist ein dauerhaftes Key-Value-Speicher, bei dem der Werteteil seiner Datensätze der Schlüsselteil eines Datensatzes im referenzierten Objekt-Store ist. Die Datensätze in einem Index werden automatisch aktualisiert, wenn Datensätze im referenzierten Objekt-Store eingefügt, aktualisiert oder gelöscht werden. Jeder Datensatz in einem Index kann nur auf einen Datensatz in seinem referenzierten Objekt-Store verweisen, aber mehrere Indizes können denselben Objekt-Store referenzieren. Wenn sich der Objekt-Store ändert, werden alle Indizes, die auf den Objekt-Store verweisen, automatisch aktualisiert.

Sie können eine Menge von Schlüsseln innerhalb eines Bereichs erfassen. Um mehr zu erfahren, siehe IDBKeyRange.

Instanzeigenschaften

IDBIndex.isAutoLocale Schreibgeschützt Nicht standardisiert Veraltet

Gibt einen booleschen Wert zurück, der angibt, ob der Index bei seiner Erstellung einen locale-Wert von auto hatte (siehe den options-Parameter von IDBObjectStore.createIndex()).

IDBIndex.locale Schreibgeschützt Nicht standardisiert Veraltet

Gibt die Gebietsschemaeinstellung des Indexes zurück (zum Beispiel en-US oder pl), falls bei der Erstellung ein locale-Wert angegeben wurde (siehe den options-Parameter von IDBObjectStore.createIndex()).

IDBIndex.name

Der Name dieses Indexes.

IDBIndex.objectStore Schreibgeschützt

Der Name des durch diesen Index referenzierten Objekt-Stores.

IDBIndex.keyPath Schreibgeschützt

Der key path dieses Indexes. Wenn dieser null ist, wird dieser Index nicht automatisch befüllt.

IDBIndex.multiEntry Schreibgeschützt

Beeinflusst, wie sich der Index verhält, wenn das Ergebnis der Auswertung des Schlüsselpads des Indexes ein Array ergibt. Ist true, gibt es einen Datensatz im Index für jedes Element in einem Array von Schlüsseln. Ist false, dann gibt es einen Datensatz für jeden Schlüssel, der ein Array ist.

IDBIndex.unique Schreibgeschützt

Wenn true, erlaubt dieser Index keine doppelten Werte für einen Schlüssel.

Instanzmethoden

Erbt von: EventTarget

IDBIndex.count()

Gibt ein IDBRequest-Objekt zurück und liefert in einem separaten Thread die Anzahl der Datensätze innerhalb eines Schlüsselbereichs.

IDBIndex.get()

Gibt ein IDBRequest-Objekt zurück und findet in einem separaten Thread entweder den Wert im referenzierten Objekt-Store, der dem angegebenen Schlüssel entspricht, oder den ersten entsprechenden Wert, wenn key ein IDBKeyRange ist.

IDBIndex.getKey()

Gibt ein IDBRequest-Objekt zurück und findet in einem separaten Thread entweder den angegebenen Schlüssel oder den Primärschlüssel, wenn key ein IDBKeyRange ist.

IDBIndex.getAll()

Gibt ein IDBRequest-Objekt zurück und findet in einem separaten Thread alle übereinstimmenden Werte im referenzierten Objekt-Store, die dem angegebenen Schlüssel entsprechen oder im Bereich liegen, wenn key ein IDBKeyRange ist.

IDBIndex.getAllKeys()

Gibt ein IDBRequest-Objekt zurück und findet in einem separaten Thread alle übereinstimmenden Schlüssel im referenzierten Objekt-Store, die dem angegebenen Schlüssel entsprechen oder im Bereich liegen, wenn key ein IDBKeyRange ist.

IDBIndex.getAllRecords()

Gibt ein IDBRequest-Objekt zurück und findet in einem separaten Thread alle übereinstimmenden Datensätze im referenzierten Objekt-Store (einschließlich Indexschlüssel, Primärschlüssel und Werte), die dem angegebenen Schlüssel entsprechen oder im Bereich liegen, wenn key ein IDBKeyRange ist.

IDBIndex.openCursor()

Gibt ein IDBRequest-Objekt zurück und erstellt in einem separaten Thread einen Cursor über den angegebenen Schlüsselbereich.

IDBIndex.openKeyCursor()

Gibt ein IDBRequest-Objekt zurück und erstellt in einem separaten Thread einen Cursor über den angegebenen Schlüsselbereich, wie es dieser Index anordnet.

Beispiel

Im folgenden Beispiel öffnen wir eine Transaktion und einen Objekt-Store, um dann den Index lName aus einer einfachen Kontaktdatenbank zu erhalten. Wir öffnen anschließend einen grundlegenden Cursor auf dem Index mit IDBIndex.openCursor — dies funktioniert genauso wie das Öffnen eines Cursors direkt auf einem ObjectStore mit IDBObjectStore.openCursor, außer dass die zurückgegebenen Datensätze basierend auf dem Index und nicht auf dem Primärschlüssel sortiert sind.

Schließlich iterieren wir durch jeden Datensatz und fügen die Daten in eine HTML-Tabelle ein. Für ein vollständiges funktionierendes Beispiel, sehen Sie sich unser IndexedDB-Beispiele-Demo-Repo an (Beispiel live ansehen.)

js
function displayDataByIndex() {
  tableEntry.textContent = "";
  const transaction = db.transaction(["contactsList"], "readonly");
  const objectStore = transaction.objectStore("contactsList");

  const myIndex = objectStore.index("lName");
  myIndex.openCursor().onsuccess = (event) => {
    const cursor = event.target.result;
    if (cursor) {
      const tableRow = document.createElement("tr");
      for (const cell of [
        cursor.value.id,
        cursor.value.lName,
        cursor.value.fName,
        cursor.value.jTitle,
        cursor.value.company,
        cursor.value.eMail,
        cursor.value.phone,
        cursor.value.age,
      ]) {
        const tableCell = document.createElement("td");
        tableCell.textContent = cell;
        tableRow.appendChild(tableCell);
      }
      tableEntry.appendChild(tableRow);

      cursor.continue();
    } else {
      console.log("Entries all displayed.");
    }
  };
}

Spezifikationen

Specification
Indexed Database API 3.0
# index-interface

Browser-Kompatibilität

Siehe auch