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: keyPath-Eigenschaft

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.

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

Die schreibgeschützte Eigenschaft keyPath der Schnittstelle IDBIndex gibt den Schlüsselpfad des aktuellen Index zurück. Ist der Wert null, wird dieser Index nicht automatisch befüllt.

Wert

Jeder Datentyp, der als Schlüsselpfad verwendet werden kann.

Beispiele

Im folgenden Beispiel öffnen wir eine Transaktion und einen Objektspeicher und rufen dann den Index lName aus einer einfachen Kontaktdatenbank ab. Anschließend öffnen wir mit IDBIndex.openCursor einen einfachen Cursor für den Index. Das funktioniert genauso wie das direkte Öffnen eines Cursors für einen ObjectStore mit IDBObjectStore.openCursor, mit dem Unterschied, dass die zurückgegebenen Datensätze nach dem Index und nicht nach dem Primärschlüssel sortiert sind.

Der Schlüsselpfad des aktuellen Index wird in der Konsole ausgegeben: Als Wert sollte lName zurückgegeben werden.

Zum Schluss durchlaufen wir jeden Datensatz und fügen die Daten in eine HTML-Tabelle ein. Ein vollständiges, funktionsfähiges Beispiel finden Sie in unserem Repository mit IndexedDB-Beispielen (Beispiel live ansehen).

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

  const myIndex = objectStore.index("lName");
  console.log(myIndex.keyPath);

  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

Spezifikation
Indexed Database API 3.0
# dom-idbindex-keypath

Browser-Kompatibilität

Siehe auch