JavaScript Academy · Les

Indexen en queries

Voer efficiënte queries uit met indexen.

Les 3 van 413 stappen

Indexen en queries is een gratis JavaScript Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject JavaScript Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus JavaScript Academy bevat in totaal 4 lessen.

Waarom indexen?

Standaard kun je records alleen opzoeken via hun primaire sleutel. Met een index kun je efficiënt query's uitvoeren op een andere eigenschap, bijvoorbeeld om alle gebruikers met een bepaalde achternaam te vinden.

Een index maken

Maak indexen in onupgradeneeded, direct nadat je de opslag hebt gemaakt, met 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 });
};

Uniek versus niet-uniek

De optie unique zorgt ervoor dat geen twee records dezelfde indexwaarde hebben. Gebruik unique: false (de standaardwaarde) wanneer meerdere records dezelfde waarde mogen hebben, zoals een stad.

store.createIndex('byCity', 'city', { unique: false });
store.createIndex('byEmail', 'email', { unique: true });

Query's uitvoeren via een index

Haal de index op uit een opslag binnen een transactie en roep er get of getAll op aan met de waarde van de geïndexeerde eigenschap.

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() retourneert elk overeenkomend record als een array in één verzoek. Dat is eenvoudiger dan itereren met een cursor bij middelgrote resultatensets.

const index = store.index('byCity');
const req = index.getAll('Paris');
req.onsuccess = () => {
  console.log('found', req.result.length, 'users in Paris');
};

Sleutelbereiken

Een IDBKeyRange beschrijft een reeks sleutels voor bereikquery's. Hulpfuncties zijn onder andere only, lowerBound, upperBound en bound.

const range = IDBKeyRange.bound(18, 65); // ages 18..65
const index = store.index('byAge');
index.getAll(range);

Opties voor grenzen

Met IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen) kun je eindpunten uitsluiten. Open grenzen zijn exclusief.

// 18 inclusive, 65 exclusive:
const range = IDBKeyRange.bound(18, 65, false, true);
// lowerBound(10) => keys >= 10
// upperBound(10, true) => keys < 10

Cursors

Open voor grote resultatensets of aangepaste iteratie een cursor met index.openCursor(range). Die doorloopt de overeenkomende records één voor één, zodat je niet alles in het geheugen hoeft te laden.

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
  }
};

Overeenkomsten tellen

index.count(range) retourneert hoeveel records overeenkomen zonder ze op te halen. Dat is snel en zuinig met geheugen.

const req = store.index('byCity').count('Paris');
req.onsuccess = () => console.log('count:', req.result);

Alleen sleutels ophalen

getAllKeys en een sleutelcursor retourneren alleen de primaire sleutels van overeenkomende records. Dat is handig wanneer je alleen verwijzingen nodig hebt en niet de volledige objecten.

const req = store.index('byCity').getAllKeys('Paris');
req.onsuccess = () => console.log('keys:', req.result);

Samenvatting van query's

Indexen maken van IndexedDB een doorzoekbare opslag: maak ze in onupgradeneeded en gebruik daarna get, getAll, sleutelbereiken en cursors om precies de records op te halen die je nodig hebt.

Korte controle

Test je begrip van indexen en query's.

Samenvatting

Je hebt indexen en query's geleerd:

  • Maak indexen in onupgradeneeded met createIndex.
  • De optie unique zorgt voor unieke waarden.
  • Voer query's uit via index.get / getAll.
  • Met IDBKeyRange kun je bereikquery's uitvoeren.
  • Cursors doorlopen grote verzamelingen; count telt overeenkomsten.

Hierna volgen versiebeheer en upgrades.

Gratis beginnen

Leer JavaScript met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
59
Lessen
200

Veelgestelde vragen

Is de les “Indexen en queries” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad JavaScript Academy, waaronder “Indexen en queries”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus JavaScript Academy bevat in totaal 4 lessen.

Wat leer ik in “Indexen en queries”?

Voer efficiënte queries uit met indexen. Je oefent met JavaScript Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met JavaScript Academy te beginnen?

Ervaring vooraf is niet nodig. JavaScript Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Indexen en queries”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over JavaScript Academy?

Ja. Elke les over JavaScript Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Een database openen
  2. Transacties en CRUD
  3. Indexen en queries
  4. Versiebeheer en upgrades
← Terug naar JavaScript Academy