Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

225
Vistas
index.getAll() en indexedDB devuelve una matriz vacía

Novato de IndexedDB aquí...

 const queueStore = db.createObjectStore("queue", { keyPath: "id", autoIncrement: true }); queueStore.createIndex("HasBeenSent", ["sent"], { unique: false });

Estoy en cola de datos, esperando una carga a un servidor en un momento posterior, por lo que por ahora el valor "enviado" es cero para cada registro; Actualizaré el registro para reflejar "enviado" igual a 1 más tarde.

Cuando trato de obtener todos los registros donde el valor de "enviado" es cero, obtengo un resultado vacío, usando

 request = db.transaction('queue').objectStore('queue').index('HasBeenSent').getAll(0);

Si elimino el cero y solo tengo corchetes vacíos, obtengo todas las filas en la tienda, pero si incluyo cualquier valor en los corchetes (0, 1, -1, etc.) cada vez obtengo resultados vacíos, incluso si definitivamente tener registros almacenados con esos valores.

(¿He estropeado algo en la configuración?)

¿Cómo consulto a la tienda para que devuelva todas las filas donde "enviado" es igual a cero?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Leí a través de varias fuentes que getAll() está bien en conjuntos de datos pequeños, pero puede ser lento y hambriento en conjuntos de datos grandes, así que decidí usar cursores que deberían funcionar mejor en conjuntos de datos grandes y pequeños. Pero me encontré con el mismo problema con resultados vacíos.

Lo que no funcionó:

 const request = db.transaction('queue').objectStore('queue').index('sent').openCursor(0);

ni

 const request = db.transaction('queue').objectStore('queue').index('sent').openCursor(IDBKeyRange.only(0));

¿Qué funcionó?

 const keyrange = IDBKeyRange.only(0); const request = db.transaction('queue').objectStore('queue').index('sent').openCursor(keyrange);

Me imagino (pero nunca probé) que al usar getAll(), necesitaría hacer algo similar definiendo primero el rango de teclas, luego incluyéndolo en la solicitud getAll(), como

 const keyrange = IDBKeyRange.only(0); const request = db.transaction('queue').objectStore('queue').index('sent').getAll(keyrange);
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda