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: count() Methode

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⁩.

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

Die count() Methode des IDBIndex-Interfaces gibt ein IDBRequest-Objekt zurück und liefert in einem separaten Thread die Anzahl der Datensätze innerhalb eines Schlüsselbereichs.

Syntax

js
count()
count(key)

Parameter

key Optional

Der Schlüssel oder Schlüsselbereich, der den zu zählenden Datensatz identifiziert.

Rückgabewert

Ein IDBRequest-Objekt, bei dem nachfolgende Ereignisse, die mit dieser Operation zusammenhängen, ausgelöst werden.

Wenn die Operation erfolgreich ist, ist der Wert der result-Eigenschaft des Antrags die Anzahl der Datensätze, die dem angegebenen Schlüssel oder Schlüsselbereich entsprechen.

Ausnahmen

Diese Methode kann einen DOMException 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 das IDBIndex gelöscht oder entfernt wurde.

Beispiele

Im folgenden Beispiel öffnen wir eine Transaktion und einen Objektstore, dann erhalten wir den Index lName aus einer einfachen Kontaktdatenbank. Wir öffnen dann einen einfachen 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.

myIndex.count() wird dann verwendet, um die Anzahl der Datensätze im Index zu zählen, und das Ergebnis dieser Anfrage wird in die Konsole protokolliert, wenn der Erfolg-Callback zurückkehrt.

Schließlich gehen wir durch jeden Datensatz und fügen die Daten in eine HTML-Tabelle ein. Ein vollständiges Arbeitsbeispiel finden Sie in unserem 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 countRequest = myIndex.count();
  countRequest.onsuccess = () => {
    console.log(countRequest.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

unsupported templ: spezifikationen

Browser-Kompatibilität

Siehe auch