Eine Datenbank öffnen
Erstellen Sie Datenbanken und Object Stores.
Eine Datenbank öffnen ist eine kostenlose JavaScript Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.
Was ist IndexedDB?
IndexedDB ist eine Transaktionsdatenbank mit großer Kapazität, die in den Browser integriert ist. Anders als localStorage (klein, nur für Strings geeignet und synchron) speichert sie strukturierte Objekte, unterstützt Indizes und arbeitet asynchron.
Eine Datenbank öffnen
Sie öffnen oder erstellen eine Datenbank mit indexedDB.open(name, version). Die Methode gibt ein Request-Objekt zurück, dessen Ereignisse über Erfolg oder Fehlschlag informieren.
const request = indexedDB.open('notes-db', 1);Die Request-Ereignisse
Eine Open-Anfrage löst Ereignisse aus, die Sie behandeln:
onsuccess— die Datenbank ist bereitonerror— das Öffnen ist fehlgeschlagenonupgradeneeded— das Schema muss erstellt oder aktualisiert werden
request.onsuccess = (e) => {
const db = e.target.result;
console.log('database opened');
};
request.onerror = (e) => {
console.log('open failed:', e.target.error);
};onupgradeneeded
onupgradeneeded wird ausgeführt, wenn die Datenbank erstmals erstellt wird oder ihre Versionsnummer steigt. Nur an dieser Stelle dürfen Sie das Schema ändern (Object Stores und Indizes erstellen oder löschen).
request.onupgradeneeded = (e) => {
const db = e.target.result;
// create object stores here
};Object Stores
Ein Object Store ist mit einer Tabelle vergleichbar: ein Container für Datensätze. Erstellen Sie ihn mit db.createObjectStore(name, options) innerhalb von onupgradeneeded.
request.onupgradeneeded = (e) => {
const db = e.target.result;
db.createObjectStore('notes', { keyPath: 'id' });
};Der keyPath
Der keyPath gibt an, welche Eigenschaft jedes Objekts als Primärschlüssel dient. Gespeicherte Objekte müssen diese Eigenschaft besitzen, und die Schlüssel müssen eindeutig sein.
db.createObjectStore('users', { keyPath: 'email' });
// Each stored user object must have a unique 'email'.Automatisch hochgezählte Schlüssel
Wenn Ihre Objekte keinen natürlichen Schlüssel besitzen, lassen Sie IndexedDB mit autoIncrement: true einen generieren. Jeder neue Datensatz erhält die nächste Ganzzahl.
db.createObjectStore('logs', {
keyPath: 'id',
autoIncrement: true
});
// id is assigned automatically on add().Vorhandene Object Stores prüfen
Da onupgradeneeded bei jedem Versionssprung ausgeführt wird, sichern Sie die Erstellung mit db.objectStoreNames.contains ab, um Fehler bei erneuten Ausführungen zu vermeiden.
request.onupgradeneeded = (e) => {
const db = e.target.result;
if (!db.objectStoreNames.contains('notes')) {
db.createObjectStore('notes', { keyPath: 'id' });
}
};Die db-Referenz speichern
Speichern Sie das Datenbankobjekt aus onsuccess, damit spätere Vorgänge es verwenden können. Alle Lese- und Schreibvorgänge laufen über diese db-Instanz.
let db;
request.onsuccess = (e) => {
db = e.target.result; // reuse for transactions
};Blockierte Öffnung behandeln
Wenn ein anderer Tab eine ältere Version geöffnet hält, kann ein Upgrade blocked sein. Hören Sie auf onblocked und bitten Sie die Benutzerin oder den Benutzer, die anderen Tabs zu schließen.
request.onblocked = () => {
console.log('Close other tabs to upgrade the database.');
};Der Ablauf beim Öffnen
IndexedDB öffnen: Rufen Sie open mit einem Namen und einer Version auf, erstellen Sie Ihr Schema in onupgradeneeded und übernehmen Sie anschließend die db in onsuccess. Danach führen Sie Transaktionen zum Lesen und Schreiben von Daten aus.
Kurzer Test
Testen Sie Ihr Verständnis des Öffnens einer Datenbank.
Zusammenfassung
Sie haben gelernt, eine IndexedDB-Datenbank zu öffnen:
indexedDB.open(name, version)gibt ein Request-Objekt zurück.- Erstellen Sie Object Stores ausschließlich in
onupgradeneeded. keyPathlegt den Primärschlüssel fest;autoIncrementgeneriert Schlüssel.- Speichern Sie die
dbausonsuccesszur späteren Verwendung. - Behandeln Sie
onerrorundonblocked.
Als Nächstes geht es um Transaktionen und CRUD-Operationen.
Häufig gestellte Fragen
Ist die Lektion „Eine Datenbank öffnen“ kostenlos?
Ja — der vollständige Text von „Eine Datenbank öffnen“ 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 „Eine Datenbank öffnen“?
Erstellen Sie Datenbanken und Object Stores. 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 1 von 4.
Wie lange dauert die Lektion „Eine Datenbank öffnen“?
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