Indekser og spørringer
Spør etter data effektivt med indekser.
Indekser og spørringer er en gratis leksjon i JavaScript Academy på CoddyKit. Dette er leksjon 3 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.
Hvorfor bruke indekser?
Som standard kan De bare slå opp poster med primærnøkkelen. En indeks lar Dem spørre effektivt etter en annen egenskap, for eksempel finne alle brukere med et bestemt etternavn.
Opprette en indeks
Opprett indekser i onupgradeneeded, rett etter at objektlageret er opprettet, med 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 });
};Unik eller ikke-unik
Alternativet unique håndhever at ingen to poster har samme indeksverdi. Bruk unique: false (standardverdien) når mange poster kan ha samme verdi, for eksempel en by.
store.createIndex('byCity', 'city', { unique: false });
store.createIndex('byEmail', 'email', { unique: true });Spørre gjennom en indeks
Hent indeksen fra et objektlager i en transaksjon, og kall deretter get eller getAll på den ved å bruke verdien til den indekserte egenskapen.
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() returnerer alle samsvarende poster som en tabell i én forespørsel. Dette er enklere enn å iterere med en markør for moderate resultatmengder.
const index = store.index('byCity');
const req = index.getAll('Paris');
req.onsuccess = () => {
console.log('found', req.result.length, 'users in Paris');
};Nøkkelområder
En IDBKeyRange beskriver et intervall med nøkler for intervallspørringer. Hjelpefunksjonene omfatter only, lowerBound, upperBound og bound.
const range = IDBKeyRange.bound(18, 65); // ages 18..65
const index = store.index('byAge');
index.getAll(range);Alternativer for avgrensning
IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen) kan utelate endepunktene. Åpne grenser er eksklusive.
// 18 inclusive, 65 exclusive:
const range = IDBKeyRange.bound(18, 65, false, true);
// lowerBound(10) => keys >= 10
// upperBound(10, true) => keys < 10Markører
For store resultatmengder eller tilpasset iterasjon kan De åpne en markør med index.openCursor(range). Den går gjennom samsvarende poster én om gangen, slik at alt ikke må lastes inn i minnet.
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
}
};Telle treff
index.count(range) returnerer hvor mange poster som samsvarer, uten å hente dem. Det er raskt og bruker lite minne.
const req = store.index('byCity').count('Paris');
req.onsuccess = () => console.log('count:', req.result);Hente bare nøkler
getAllKeys og en nøkkelmarkør returnerer bare primærnøklene til samsvarende poster. Dette er nyttig når De bare trenger referanser, ikke komplette objekter.
const req = store.index('byCity').getAllKeys('Paris');
req.onsuccess = () => console.log('keys:', req.result);Oppsummering av spørringer
Indekser gjør IndexedDB til et søkbart lager: Opprett dem i onupgradeneeded, og bruk deretter get, getAll, nøkkelområder og markører for å hente nøyaktig postene De trenger.
Hurtigsjekk
Test forståelsen Deres av indekser og spørringer.
Oppsummering
De har lært om indekser og spørringer:
- Opprett indekser i
onupgradeneededmedcreateIndex. - Alternativet
uniquehåndhever unike verdier. - Spør gjennom
index.get/getAll. IDBKeyRangemuliggjør intervallspørringer.- Markører itererer over store mengder, mens
countteller treff.
Deretter skal vi se på versjonering og oppgraderinger.
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 «Indekser og spørringer» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien JavaScript Academy, inkludert «Indekser og spørringer», 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 «Indekser og spørringer»?
Spør etter data effektivt med indekser. 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 3 av 4.
Hvor lang tid tar leksjonen «Indekser og spørringer»?
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
- Åpne en database
- Transaksjoner og CRUD
- Indekser og spørringer
- Versjonering og oppgraderinger