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: objectStore-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 objectStore der Schnittstelle IDBIndex gibt den Object Store zurück, auf den der aktuelle Index verweist.

Wert

Ein IDBObjectStore.

Beispiele

Im folgenden Beispiel öffnen wir eine Transaktion und einen Object Store und rufen dann den Index lName aus einer einfachen Kontaktdatenbank ab. Anschließend öffnen wir mit IDBIndex.openCursor einen Cursor auf dem Index. Dies funktioniert genauso wie das direkte Öffnen eines Cursors auf einem 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 aktuelle Object Store wird in der Konsole ausgegeben. Die Ausgabe sollte etwa so aussehen:

IDBObjectStore { name: "contactsList", keyPath: "id", indexNames: DOMStringList[7], transaction: IDBTransaction, autoIncrement: false }

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 Demo-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.objectStore);

  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
# ref-for-dom-idbindex-objectstore①

Browser-Kompatibilität

Siehe auch