0Pricing
JavaScript Academy · Pelajaran

Indeks dan Kueri

Kuerikan data secara efisien dengan indeks.

Indeks dan Kueri adalah pelajaran JavaScript Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar JavaScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus JavaScript Academy mencakup 4 pelajaran total.

Mengapa Indeks?

Secara bawaan, Anda hanya dapat mencari rekaman berdasarkan kunci utamanya. Indeks memungkinkan Anda melakukan kueri berdasarkan properti lain secara efisien, misalnya menemukan semua pengguna dengan nama belakang tertentu.

Membuat Indeks

Buat indeks di dalam onupgradeneeded, tepat setelah membuat store, dengan 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 vs Tidak Unik

Opsi unique memastikan bahwa tidak ada dua rekaman yang memiliki nilai indeks yang sama. Gunakan unique: false (nilai bawaan) ketika banyak rekaman dapat memiliki nilai yang sama, seperti nama kota.

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

Melakukan Kueri melalui Indeks

Dapatkan indeks dari store dalam transaction, lalu panggil get atau getAll pada indeks tersebut menggunakan nilai properti yang diindeks.

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() mengembalikan setiap rekaman yang cocok sebagai array dalam satu permintaan, sehingga lebih sederhana daripada melakukan iterasi dengan kursor untuk kumpulan hasil berukuran sedang.

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

Rentang Kunci

IDBKeyRange mendeskripsikan rentang kunci untuk kueri rentang. Pembantu yang tersedia mencakup only, lowerBound, upperBound, dan bound.

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

Opsi bound

IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen) dapat mengecualikan titik akhir. Batas terbuka bersifat eksklusif.

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

Kursor

Untuk kumpulan hasil yang besar atau iterasi khusus, buka kursor dengan index.openCursor(range). Kursor mengunjungi rekaman yang cocok satu per satu sehingga Anda tidak perlu memuat semuanya ke dalam memori.

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

Menghitung Kecocokan

index.count(range) mengembalikan jumlah rekaman yang cocok tanpa mengambil rekaman tersebut, sehingga cepat dan hanya menggunakan sedikit memori.

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

Mendapatkan Kunci Saja

getAllKeys dan kursor kunci hanya mengembalikan kunci utama dari rekaman yang cocok, berguna ketika Anda hanya memerlukan referensi, bukan objek lengkap.

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

Ringkasan Kueri

Indeks mengubah IndexedDB menjadi store yang dapat dikuerikan: buat indeks di onupgradeneeded, lalu gunakan get, getAll, rentang kunci, dan kursor untuk mengambil tepat rekaman yang Anda perlukan.

Uji Cepat

Ujilah pemahaman Anda tentang indeks dan kueri.

Ringkasan

Anda telah mempelajari indeks dan kueri:

  • Buat indeks di onupgradeneeded dengan createIndex.
  • Opsi unique memastikan nilai-nilai yang berbeda.
  • Lakukan kueri melalui index.get / getAll.
  • IDBKeyRange memungkinkan kueri rentang.
  • Kursor melakukan iterasi pada kumpulan besar; count menghitung kecocokan.

Selanjutnya, pemberian versi dan pemutakhiran.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Indeks dan Kueri” gratis?

Ya — teks lengkap “Indeks dan Kueri” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus JavaScript Academy, upgrade ke CoddyKit PRO. Kursus JavaScript Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Indeks dan Kueri”?

Kuerikan data secara efisien dengan indeks. Kamu berlatih JavaScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai JavaScript Academy?

Tidak diperlukan pengalaman sebelumnya. JavaScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Indeks dan Kueri” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran JavaScript Academy ini?

Ya. Setiap pelajaran JavaScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Membuka Basis Data
  2. Transaksi dan CRUD
  3. Indeks dan Kueri
  4. Pemberian Versi dan Peningkatan
← Kembali ke JavaScript Academy