0Pricing
JavaScript Academy · Lección

Índices y consultas

Consulte datos eficazmente mediante índices.

Índices y consultas es una lección gratuita de JavaScript Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de JavaScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de JavaScript Academy incluye 4 lecciones en total.

¿Por qué usar índices?

De forma predeterminada, solo puede buscar registros por su clave primaria. Un índice permite consultar otra propiedad de forma eficiente, por ejemplo, para encontrar todos los usuarios con un determinado apellido.

Crear un índice

Cree índices dentro de onupgradeneeded, justo después de crear el almacén, mediante 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 });
};

Único frente a no único

La opción unique garantiza que ningún par de registros comparta el mismo valor del índice. Use unique: false (el valor predeterminado) cuando muchos registros puedan compartir un valor, como una ciudad.

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

Consultar mediante un índice

Obtenga el índice de un almacén dentro de una transacción y, después, llame a get o getAll en él usando el valor de la propiedad indexada.

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() devuelve todos los registros coincidentes en forma de array en una sola solicitud, lo que resulta más sencillo que iterar con un cursor para conjuntos de resultados moderados.

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

Rangos de claves

Un IDBKeyRange describe un intervalo de claves para las consultas por rango. Incluye los métodos auxiliares only, lowerBound, upperBound y bound.

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

Opciones de límites

IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen) puede excluir los extremos. Los límites abiertos son exclusivos.

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

Cursores

Para conjuntos de resultados grandes o iteraciones personalizadas, abra un cursor con index.openCursor(range). Este visita los registros coincidentes uno a uno, para que no tenga que cargarlo todo en memoria.

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

Contar coincidencias

index.count(range) devuelve cuántos registros coinciden sin recuperarlos, por lo que es rápido y consume poca memoria.

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

Obtener solo las claves

getAllKeys y un cursor de claves devuelven únicamente las claves primarias de los registros coincidentes, lo que resulta útil cuando solo necesita referencias y no los objetos completos.

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

Repaso de las consultas

Los índices convierten IndexedDB en un almacén consultable: créelos en onupgradeneeded y, después, use get, getAll, rangos de claves y cursores para obtener exactamente los registros que necesita.

Comprobación rápida

Compruebe su comprensión de los índices y las consultas.

Repaso

Ha aprendido sobre índices y consultas:

  • Cree índices en onupgradeneeded con createIndex.
  • La opción unique garantiza que los valores sean distintos.
  • Consulte mediante index.get / getAll.
  • IDBKeyRange permite realizar consultas por rango.
  • Los cursores recorren conjuntos grandes; count cuenta las coincidencias.

A continuación, versionado y actualizaciones.

Preguntas frecuentes

¿La lección «Índices y consultas» es gratis?

Sí — el texto completo de «Índices y consultas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de JavaScript Academy, actualiza a CoddyKit PRO. El curso de JavaScript Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Índices y consultas»?

Consulte datos eficazmente mediante índices. Practicas JavaScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar JavaScript Academy?

No se requiere experiencia previa. JavaScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Índices y consultas»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de JavaScript Academy?

Sí. Cada lección de JavaScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Apertura de una base de datos
  2. Transacciones y CRUD
  3. Índices y consultas
  4. Versionado y actualizaciones
← Volver a JavaScript Academy