CodeBlanks Logo Icon CodeBlanks

Meydan okuma - IndexedDB uygulaması

JavaScript kursu · İleri seviye · Ders 99/100

IndexedDB ile bir yer imi uygulamasının veri ekleyip sorgulama akışını yazarsın.

IndexedDB uygulaması

Bu meydan okumada bir yer imi uygulamasının veri akışını yazacaksın. Önce indexedDB.open('bookmarks', 1) ile veritabanını açarsın; ikinci argüman sürüm numarasıdır.

İlk açılışta onupgradeneeded olayı tetiklenir. Burada db.createObjectStore('marks', { keyPath: 'id' }) ile veri deposunu oluşturursun. Bu, tablo gibi düşünülebilir.

Veri eklemek için bir transaction açar, objectStore('marks')'ı alır ve add(bookmark) çağırırsın. Tüm işlemler bir transaction içinde olmalıdır.

Veri ekleme ve sorgu

Bir transaction, bir veya daha fazla object store üzerinde atomik bir işlemdir. db.transaction('marks', 'readwrite') ile hem okuma hem yazma izni alırsın.

Üzerinden objectStore('marks')'ı alır, sonra store.add(bookmark) ile yeni kayıt eklersin. Her işlem bir request döndürür; onsuccess ile başarılı olduğunu anlarsın.

Sorgu için aynı akışı 'readonly' ile açar, store.get(id) veya bir index üzerinden store.index('title') ile arama yaparsın.

Uygulama addBookmark fonksiyonunu yaz

addBookmark(db, bookmark) yaz: db.transaction('marks', 'readwrite') ile yazma işlemi aç, objectStore('marks')'ı al ve store.add(bookmark) ile yer imini ekle.

Örnek çözümü göster
function addBookmark(db, bookmark) aç. İçinde const tx = db.transaction('marks', 'readwrite'); const store = tx.objectStore('marks'); store.add(bookmark); yaz.

Örnek çözüm:
function addBookmark(db, bookmark) {
  const tx = db.transaction('marks', 'readwrite');
  const store = tx.objectStore('marks');
  store.add(bookmark);
}

Kendini test et

  1. Veritabanını aç

    const request = ____;
    request.onupgradeneeded = (event) => {
      const db = event.target.result;
      db.createObjectStore('marks', { keyPath: 'id' });
    };
    Cevabı göster
    const request = indexedDB.open('bookmarks', 1);
    request.onupgradeneeded = (event) => {
      const db = event.target.result;
      db.createObjectStore('marks', { keyPath: 'id' });
    };
  2. Veri eklemek için objectStore ne üzerinden alınır?

    const tx = db.transaction('marks', 'readwrite');
    const store = tx.objectStore('marks');
    store.add(bookmark);
    • Doğrudan db nesnesi
    • indexedDB globali
    • event.target.result
    • Bir transaction üzerinden
    Cevabı göster

    Bir transaction üzerinden — Doğru! Tüm veri işlemleri bir transaction içindeki objectStore üzerinden yapılır.

  3. IndexedDB kavramlarını eşleştir

    indexedDB.open
    Veritabanını açar
    onupgradeneeded
    Depoyu oluşturur
    transaction()
    Atomik işlem başlatır
    objectStore()
    Depoya erişir

İleri seviye bölümündeki tüm dersler