JavaScript Academy · Oppitunti

Tietokannan avaaminen

Luokaa tietokantoja ja objektivarastoja.

Oppitunti 1/413 vaihetta

Tietokannan avaaminen on ilmainen JavaScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu JavaScript Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. JavaScript Academy-kurssilla on yhteensä 4 oppituntia.

Mikä IndexedDB on

IndexedDB on selaimeen sisäänrakennettu suurikapasiteettinen transaktioita tukeva tietokanta. Toisin kuin localStorage, joka on pieni, tallentaa vain merkkijonoja ja toimii synkronisesti, se tallentaa rakenteisia objekteja, tukee indeksejä ja toimii asynkronisesti.

Tietokannan avaaminen

Tietokanta avataan tai luodaan kutsulla indexedDB.open(name, version). Kutsu palauttaa request-objektin, jonka tapahtumat ilmoittavat onnistumisesta tai epäonnistumisesta.

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

Request-tapahtumat

Avauksen request käynnistää tapahtumia, joita käsitellään:

  • onsuccess — tietokanta on valmis
  • onerror — avaaminen epäonnistui
  • onupgradeneeded — skeema on luotava tai päivitettävä
request.onsuccess = (e) => {
  const db = e.target.result;
  console.log('database opened');
};
request.onerror = (e) => {
  console.log('open failed:', e.target.error);
};

onupgradeneeded

onupgradeneeded suoritetaan, kun tietokanta luodaan ensimmäisen kerran tai sen versionumero kasvaa. Tämä on ainoa paikka, jossa skeemaa voi muuttaa eli objektivarastoja ja indeksejä voi luoda tai poistaa.

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

Objektivarastot

Objektivarasto on taulukon kaltainen tietueiden säilö. Se luodaan kutsulla db.createObjectStore(name, options) onupgradeneeded-käsittelijän sisällä.

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

keyPath

keyPath kertoo IndexedDB:lle, mikä kunkin objektin ominaisuus toimii sen ensisijaisena avaimena. Tallennetuilla objekteilla on oltava kyseinen ominaisuus, ja avainten on oltava yksilöllisiä.

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

Automaattisesti kasvavat avaimet

Jos objekteilla ei ole luontevaa avainta, IndexedDB voi luoda sellaisen käyttämällä asetusta autoIncrement: true. Jokainen uusi tietue saa seuraavan kokonaisluvun.

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

Olemassa olevien objektivarastojen tarkistaminen

Koska onupgradeneeded suoritetaan jokaisen versionumeron muutoksen yhteydessä, objektivaraston luominen kannattaa suojata tarkistuksella db.objectStoreNames.contains, jotta toistuvat suoritukset eivät aiheuta virheitä.

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

db-viitteen säilyttäminen

Tallentakaa tietokantaobjekti onsuccess-käsittelijästä, jotta myöhemmät operaatiot voivat käyttää sitä. Kaikki luku- ja kirjoitusoperaatiot tehdään tämän db-instanssin kautta.

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

Estettyjen avausyritysten käsittely

Jos toinen välilehti pitää vanhemman version avoinna, päivitys voi estyä eli se voi olla blocked-tilassa. Kuunnelkaa onblocked-tapahtumaa ja pyytäkää käyttäjää sulkemaan muut välilehdet.

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

Avaamisen kulku

IndexedDB:n avaaminen etenee näin: kutsukaa open-metodia nimen ja version kanssa, luokaa skeema onupgradeneeded-käsittelijässä ja ottakaa db talteen onsuccess-käsittelijässä. Tämän jälkeen voitte suorittaa transaktioita datan lukemista ja kirjoittamista varten.

Pikatesti

Testatkaa, kuinka hyvin ymmärrätte tietokannan avaamisen.

Kertaus

Opitte avaamaan IndexedDB-tietokannan:

  • indexedDB.open(name, version) palauttaa request-objektin.
  • Objektivarastot luodaan vain onupgradeneeded-käsittelijässä.
  • keyPath määrittää ensisijaisen avaimen ja autoIncrement luo avaimet automaattisesti.
  • db tallennetaan onsuccess-käsittelijästä myöhempää käyttöä varten.
  • onerror- ja onblocked-tapahtumat on käsiteltävä.

Seuraavaksi käsitellään transaktioita ja CRUD-operaatioita.

Aloita maksutta

Opi JavaScript tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
59
Oppitunnit
200

Usein kysytyt kysymykset

Onko oppitunti ”Tietokannan avaaminen” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa JavaScript Academy-oppimispolun 3 oppituntia, myös oppitunnin “Tietokannan avaaminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. JavaScript Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Tietokannan avaaminen”?

Luokaa tietokantoja ja objektivarastoja. Harjoittelet JavaScript Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni JavaScript Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin JavaScript Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Tietokannan avaaminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä JavaScript Academy-oppitunnilla?

Kyllä. Jokainen JavaScript Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Tietokannan avaaminen
  2. Transaktiot ja CRUD
  3. Indeksit ja kyselyt
  4. Versiointi ja päivitykset
← Takaisin: JavaScript Academy