JavaScript Academy · leksjon

Indekser og spørringer

Spør etter data effektivt med indekser.

Leksjon 3 av 413 trinn

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 < 10

Markø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 onupgradeneeded med createIndex.
  • Alternativet unique håndhever unike verdier.
  • Spør gjennom index.get / getAll.
  • IDBKeyRange muliggjør intervallspørringer.
  • Markører itererer over store mengder, mens count teller treff.

Deretter skal vi se på versjonering og oppgraderinger.

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 «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

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