Åbning af en database
Opret databaser og object stores.
Å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 klaronerror— åbningen mislykkedesonupgradeneeded— 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. keyPathangiver primærnøglen;autoIncrementgenererer nøgler.- Gem
dbfraonsuccesstil senere brug. - Håndter
onerrorogonblocked.
Dernæst: transaktioner og CRUD-handlinger.
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
- Åbning af en database
- Transaktioner og CRUD
- Indekser og forespørgsler
- Versionering og opgraderinger