JavaScript Academy · leksjon

Åpne en database

Opprett databaser og objektlagre.

Leksjon 1 av 413 trinn

Åpne en database er en gratis leksjon i JavaScript Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i JavaScript Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i JavaScript Academy inneholder totalt 4 leksjoner.

Hva er IndexedDB?

IndexedDB er en database med stor kapasitet og transaksjonsstøtte som er innebygd i nettleseren. I motsetning til localStorage (liten, bare for strenger og synkron) lagrer den strukturerte objekter, støtter indekser og fungerer asynkront.

Åpne en database

Du åpner eller oppretter en database med indexedDB.open(name, version). Metoden returnerer et forespørselsobjekt der hendelser rapporterer om det lykkes eller mislykkes.

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

Forespørselshendelsene

En åpningsforespørsel utløser hendelser som du håndterer:

  • onsuccess — databasen er klar
  • onerror — åpningen mislyktes
  • onupgradeneeded — skjemaet må opprettes eller oppgraderes
request.onsuccess = (e) => {
  const db = e.target.result;
  console.log('database opened');
};
request.onerror = (e) => {
  console.log('open failed:', e.target.error);
};

onupgradeneeded

onupgradeneeded kjøres når databasen opprettes for første gang, eller når versjonsnummeret økes. Dette er det eneste stedet der du kan endre skjemaet (opprette eller slette objektlagre og indekser).

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

Objektlagre

Et objektlager er omtrent som en tabell: en beholder for poster. Opprett et med db.createObjectStore(name, options) inne i onupgradeneeded.

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

keyPath

keyPath angir hvilken egenskap i hvert objekt som er primærnøkkelen. Lagrede objekter må ha denne egenskapen, og nøklene må være unike.

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

Nøkler med automatisk inkrementering

Hvis objektene dine ikke har en naturlig nøkkel, kan du la IndexedDB generere en med autoIncrement: true. Hver nye post får det neste heltallet.

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

Kontrollere eksisterende objektlagre

Siden onupgradeneeded kjøres ved hver versjonsøkning, bør du kontrollere opprettelsen med db.objectStoreNames.contains for å unngå feil ved nye kjøringer.

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

Ta vare på db-referansen

Lagre databaseobjektet fra onsuccess slik at senere operasjoner kan bruke det. Alle lesinger og skrivinger går gjennom denne db-instansen.

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

Håndtere blokkert åpning

Hvis en annen fane har en eldre versjon åpen, kan en oppgradering bli blocked. Lytt etter onblocked og be brukeren lukke andre faner.

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

Åpningsforløpet

Slik åpner du IndexedDB: kall open med et navn og en versjon, opprett skjemaet i onupgradeneeded, og hent deretter db i onsuccess. Derfra kan du kjøre transaksjoner for å lese og skrive data.

Hurtigsjekk

Test forståelsen din av hvordan du åpner en database.

Oppsummering

Du har lært å åpne en IndexedDB-database:

  • indexedDB.open(name, version) returnerer en forespørsel.
  • Opprett objektlagre bare i onupgradeneeded.
  • keyPath angir primærnøkkelen; autoIncrement genererer nøkler.
  • Lagre db fra onsuccess for senere bruk.
  • Håndter onerror og onblocked.

Deretter ser vi på transaksjoner og CRUD-operasjoner.

Gratis å komme i gang

Lær deg JavaScript med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
59
Leksjoner
200

Ofte stilte spørsmål

Er leksjonen «Åpne en database» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien JavaScript Academy, inkludert «Åpne en database», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i JavaScript Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Åpne en database»?

Opprett databaser og objektlagre. Du øver på JavaScript Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med JavaScript Academy?

Ingen tidligere erfaring er nødvendig. JavaScript Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Åpne en database»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne JavaScript Academy-leksjonen?

Ja. Alle JavaScript Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Åpne en database
  2. Transaksjoner og CRUD
  3. Indekser og spørringer
  4. Versjonering og oppgraderinger
← Tilbake til JavaScript Academy