JavaScript Academy · Lektion

Åbning af en database

Opret databaser og object stores.

Lektion 1 af 413 trin

Åbning af en database er en gratis JavaScript Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i JavaScript Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. JavaScript Academy-kurset indeholder 4 lektioner i alt.

Hvad er IndexedDB

IndexedDB er en transaktionsbaseret database med stor kapacitet, der er indbygget i browseren. I modsætning til localStorage (lille, kun strenge, synkron) gemmer den strukturerede objekter, understøtter indekser og fungerer asynkront.

Åbning af en database

Du åbner (eller opretter) en database med indexedDB.open(name, version). Den returnerer et forespørgselsobjekt, hvis hændelser angiver succes eller fejl.

const request = indexedDB.open('notes-db', 1);

Hændelser for forespørgslen

En åbningsforespørgsel udløser hændelser, som du håndterer:

  • onsuccess — databasen er klar
  • onerror — åbningen mislykkedes
  • onupgradeneeded — skemaet skal oprettes eller opgraderes
request.onsuccess = (e) => {
  const db = e.target.result;
  console.log('database opened');
};
request.onerror = (e) => {
  console.log('open failed:', e.target.error);
};

onupgradeneeded

onupgradeneeded køres, når databasen oprettes første gang, eller versionsnummeret øges. Det er det eneste sted, hvor du kan ændre skemaet (oprette eller slette objektlagre og indekser).

request.onupgradeneeded = (e) => {
  const db = e.target.result;
  // create object stores here
};

Objektlagre

Et objektlager fungerer som en tabel: en beholder til poster. Opret et med db.createObjectStore(name, options) i onupgradeneeded.

request.onupgradeneeded = (e) => {
  const db = e.target.result;
  db.createObjectStore('notes', { keyPath: 'id' });
};

keyPath

keyPath fortæller IndexedDB, hvilken egenskab i hvert objekt der er dets primærnøgle. Gemte objekter skal have denne egenskab, og nøgler skal være entydige.

db.createObjectStore('users', { keyPath: 'email' });
// Each stored user object must have a unique 'email'.

Nøgler med automatisk inkrementering

Hvis dine objekter ikke har en naturlig nøgle, kan du lade IndexedDB generere en med autoIncrement: true. Hver ny post får det næste heltal.

db.createObjectStore('logs', {
  keyPath: 'id',
  autoIncrement: true
});
// id is assigned automatically on add().

Kontrol af eksisterende objektlagre

Da onupgradeneeded køres ved hver versionsforøgelse, skal du beskytte oprettelsen med db.objectStoreNames.contains for at undgå fejl ved gentagne kørsler.

request.onupgradeneeded = (e) => {
  const db = e.target.result;
  if (!db.objectStoreNames.contains('notes')) {
    db.createObjectStore('notes', { keyPath: 'id' });
  }
};

Gem db-referencen

Gem databaseobjektet fra onsuccess, så senere handlinger kan bruge det. Alle læse- og skriveoperationer går gennem denne db-instans.

let db;
request.onsuccess = (e) => {
  db = e.target.result; // reuse for transactions
};

Håndtering af blokerede åbninger

Hvis en anden fane har en ældre version åben, kan opgraderingen blive blocked. Lyt efter onblocked, og bed brugeren lukke andre faner.

request.onblocked = () => {
  console.log('Close other tabs to upgrade the database.');
};

Åbningsforløbet

Åbning af IndexedDB: kald open med et navn og en version, opret dit skema i onupgradeneeded, og hent derefter db i onsuccess. Herfra kan du køre transaktioner for at læse og skrive data.

Hurtig test

Test din forståelse af, hvordan en database åbnes.

Opsummering

Du har lært at åbne en IndexedDB-database:

  • indexedDB.open(name, version) returnerer en forespørgsel.
  • Opret kun objektlagre i onupgradeneeded.
  • keyPath angiver primærnøglen; autoIncrement genererer nøgler.
  • Gem db fra onsuccess til senere brug.
  • Håndter onerror og onblocked.

Dernæst: transaktioner og CRUD-handlinger.

Gratis at komme i gang

Lær JavaScript med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
59
Lektioner
200

Ofte stillede spørgsmål

Er lektionen “Åbning af en database” gratis?

Ja — alle 3 lektioner i læringssporet JavaScript Academy, inklusive “Åbning af en database”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. JavaScript Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Åbning af en database”?

Opret databaser og object stores. Du øver dig i JavaScript Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på JavaScript Academy?

Der kræves ingen tidligere erfaring. JavaScript Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Åbning af en database”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne JavaScript Academy-lektion?

Ja. Alle JavaScript Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Åbning af en database
  2. Transaktioner og CRUD
  3. Indekser og forespørgsler
  4. Versionering og opgraderinger
← Tilbage til JavaScript Academy