Indizes und Abfragen
Fragen Sie Daten mithilfe von Indizes effizient ab.
Indizes und Abfragen ist eine kostenlose JavaScript Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des JavaScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der JavaScript Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum Indizes?
Standardmäßig können Sie Datensätze nur über ihren Primärschlüssel suchen. Ein Index ermöglicht effiziente Abfragen über eine andere Eigenschaft, etwa um alle Benutzer mit einem bestimmten Nachnamen zu finden.
Einen Index erstellen
Erstellen Sie Indizes in onupgradeneeded, direkt nachdem Sie den Object Store erstellt haben, mit store.createIndex(name, keyPath, options).
request.onupgradeneeded = (e) => {
const db = e.target.result;
const store = db.createObjectStore('users', { keyPath: 'id' });
store.createIndex('byEmail', 'email', { unique: true });
};Eindeutig oder nicht eindeutig
Die Option unique stellt sicher, dass keine zwei Datensätze denselben Indexwert haben. Verwenden Sie unique: false (die Standardeinstellung), wenn mehrere Datensätze denselben Wert haben können, etwa bei einer Stadt.
store.createIndex('byCity', 'city', { unique: false });
store.createIndex('byEmail', 'email', { unique: true });Über einen Index abfragen
Rufen Sie den Index in einer Transaktion aus einem Object Store ab und rufen Sie anschließend darauf mit dem Wert der indizierten Eigenschaft get oder getAll auf.
const tx = db.transaction('users', 'readonly');
const index = tx.objectStore('users').index('byEmail');
const req = index.get('ada@example.com');
req.onsuccess = () => console.log(req.result);getAll
getAll() gibt alle übereinstimmenden Datensätze als Array in einer Anfrage zurück. Bei moderaten Ergebnismengen ist das einfacher, als mit einem Cursor zu iterieren.
const index = store.index('byCity');
const req = index.getAll('Paris');
req.onsuccess = () => {
console.log('found', req.result.length, 'users in Paris');
};Schlüsselbereiche
Ein IDBKeyRange beschreibt einen Schlüsselbereich für Bereichsabfragen. Zu den Hilfsmethoden gehören only, lowerBound, upperBound und bound.
const range = IDBKeyRange.bound(18, 65); // ages 18..65
const index = store.index('byAge');
index.getAll(range);Optionen für Grenzen
IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen) kann Endpunkte ausschließen. Offene Grenzen sind exklusiv.
// 18 inclusive, 65 exclusive:
const range = IDBKeyRange.bound(18, 65, false, true);
// lowerBound(10) => keys >= 10
// upperBound(10, true) => keys < 10Cursor
Für große Ergebnismengen oder eine benutzerdefinierte Iteration öffnen Sie mit index.openCursor(range) einen Cursor. Er durchläuft die übereinstimmenden Datensätze einzeln, sodass nicht alle in den Arbeitsspeicher geladen werden müssen.
const req = store.index('byCity').openCursor();
req.onsuccess = (e) => {
const cursor = e.target.result;
if (cursor) {
console.log(cursor.value);
cursor.continue(); // move to next match
}
};Übereinstimmungen zählen
index.count(range) gibt die Anzahl der übereinstimmenden Datensätze zurück, ohne sie abzurufen. Das ist schnell und benötigt wenig Arbeitsspeicher.
const req = store.index('byCity').count('Paris');
req.onsuccess = () => console.log('count:', req.result);Nur Schlüssel abrufen
getAllKeys und ein Schlüssel-Cursor geben nur die Primärschlüssel der übereinstimmenden Datensätze zurück. Das ist nützlich, wenn Sie nur Referenzen und nicht die vollständigen Objekte benötigen.
const req = store.index('byCity').getAllKeys('Paris');
req.onsuccess = () => console.log('keys:', req.result);Rückblick auf Abfragen
Indizes machen IndexedDB zu einem abfragbaren Speicher: Erstellen Sie sie in onupgradeneeded und verwenden Sie anschließend get, getAll, Schlüsselbereiche und Cursor, um genau die benötigten Datensätze abzurufen.
Kurze Überprüfung
Testen Sie Ihr Verständnis von Indizes und Abfragen.
Rückblick
Sie haben Indizes und Abfragen kennengelernt:
- Erstellen Sie Indizes in
onupgradeneededmitcreateIndex. - Die Option
uniqueerzwingt eindeutige Werte. - Führen Sie Abfragen über
index.get/getAllaus. IDBKeyRangeermöglicht Bereichsabfragen.- Cursor durchlaufen große Mengen; mit
countzählen Sie die Übereinstimmungen.
Als Nächstes folgen Versionierung und Upgrades.
Häufig gestellte Fragen
Ist die Lektion „Indizes und Abfragen“ kostenlos?
Ja — der vollständige Text von „Indizes und Abfragen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des JavaScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der JavaScript Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Indizes und Abfragen“?
Fragen Sie Daten mithilfe von Indizes effizient ab. Du übst JavaScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um JavaScript Academy zu starten?
Keine Vorkenntnisse erforderlich. JavaScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Indizes und Abfragen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser JavaScript Academy-Lektion Code schreiben und ausführen?
Ja. Jede JavaScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Eine Datenbank öffnen
- Transaktionen und CRUD
- Indizes und Abfragen
- Versionierung und Upgrades