IDBIndex: get()-Methode

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Die get()-Methode der IDBIndex-Schnittstelle gibt ein IDBRequest-Objekt zurück und sucht in einem separaten Thread entweder den Wert im referenzierten Objekt-Store, der dem angegebenen Schlüssel entspricht, oder den ersten entsprechenden Wert, wenn key auf ein IDBKeyRange gesetzt ist.

Wenn ein Wert gefunden wird, wird ein strukturierter Klon davon erstellt und als result des Anforderungsobjekts festgelegt: dies gibt den Datensatz zurück, mit dem der Schlüssel verknüpft ist.

Syntax

js
get()
get(key)

Parameter

key Optional

Ein Schlüssel oder IDBKeyRange, der den abzurufenden Datensatz identifiziert. Wenn dieser Wert null oder nicht vorhanden ist, verwendet der Browser einen ungebundenen Schlüsselbereich.

Rückgabewert

Ein IDBRequest-Objekt, auf dem nachfolgende Ereignisse im Zusammenhang mit diesem Vorgang ausgelöst werden.

Wenn der Vorgang erfolgreich ist, ist der Wert der result-Eigenschaft der Anfrage der Wert des ersten Datensatzes, der mit dem angegebenen Schlüssel oder Schlüsselbereich übereinstimmt.

Ausnahmen

Diese Methode kann eine DOMException von einem der folgenden Typen auslösen:

TransactionInactiveError DOMException

Wird ausgelöst, wenn die Transaktion dieses IDBIndex inaktiv ist.

DataError DOMException

Wird ausgelöst, wenn der bereitgestellte Schlüssel oder Schlüsselbereich einen ungültigen Schlüssel enthält.

InvalidStateError DOMException

Wird ausgelöst, wenn der IDBIndex gelöscht oder entfernt wurde.

Beispiele

Im folgenden Beispiel öffnen wir eine Transaktion und einen Objekt-Store und rufen dann den Index lName aus einer einfachen Kontaktdatenbank ab. Wir öffnen dann 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 dem Primärschlüssel sortiert sind.

myIndex.get('Bungle') wird dann verwendet, um den Datensatz mit einem lName von Bungle abzurufen, und das Ergebnis dieser Anfrage wird in der Konsole protokolliert, wenn der Erfolg-Callback zurückkehrt.

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

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

  const myIndex = objectStore.index("lName");
  const getRequest = myIndex.get("Bungle");
  getRequest.onsuccess = () => {
    console.log(getRequest.result);
  };

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

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch