Tengo un almacén de datos IndexedDB con algunos cientos de objetos en él. Me gustaría obtener los elementos 40-59 de él según el orden en uno de mis índices en esa tienda. ¿Hay alguna manera de hacerlo sin simplemente llamar cursor.continue() 39 veces antes de comenzar a consumir datos? Parece bastante desperdicio en términos de tiempo de procesamiento.Búsqueda con cursor IndexedDB
Respuesta
Creo que se puede llamar cursor.advance(40)
referencia de especificaciones: http://www.w3.org/TR/IndexedDB/#widl-IDBCursor-advance
que tenían el mismo problema y cursor.advance(40)
es lo que desea utilizar.
Una cosa que me tomó un tiempo entender que puede ser útil para otros es si quieres avanzar con el cursor y repetir los resultados, necesitarás llamarlos en manejadores separados de openCursor().onsuccess
, o implementar algún tipo de seguimiento para evitar que ambos sean llamados en la misma solicitud o que se genere una excepción InvalidStateError
. Esto se puede hacer de esta manera:
manejadores diferentes
// advance first
store.openCursor().onsuccess = function(event) {
var cursor = event.target.result;
cursor.advance(40);
};
// then iterate
objectStore.openCursor().onsuccess = function(event) {
var cursor = event.target.result;
cursor.continue();
});
mismo controlador de referencia
// create flag for advancing
var advancing = true;
store.openCursor().onsuccess = function(event) {
var cursor = event.target.result;
// advancing
if (advancing === true) {
cursor.advance(40);
// set advancing flag to false so we don't advance again
advancing = false;
}
// continuing
else {
cursor.continue();
}
}
Spec: http://www.w3.org/TR/IndexedDB/#widl-IDBCursor-advance-void-unsigned-long-count Referencia MDN con el ejemplo: https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.advance
- 1. Indexeddb: búsqueda usando comodines
- 2. IndexedDB Fuzzy Search
- 3. búsqueda de MySQL problema del cursor siguiente
- 4. Problemas conceptuales con IndexedDB (relaciones, etc.)
- 5. Wrapper functions for IndexedDB
- 6. ¿Cómo actualizo los datos en indexedDB?
- 7. ¿Cómo puedo acceder indexedDB sincrónicamente?
- 8. Uso de IndexedDB y del servidor remoto con Backbone.js
- 9. Cómo ver el contenido IndexedDB en Firefox
- 10. ¿Cómo ver el contenido IndexedDB en chrome?
- 11. Exportación e importación de datos de IndexedDB
- 12. IndexedDB y muchas a muchas relaciones
- 13. Cursor dentro del cursor
- 14. Ordenar los resultados de una consulta indexedDB
- 15. Dudas sobre HTML5 IndexedDB Async API
- 16. Indexeddb: ¿Diferencias entre onsuccess y oncomplete?
- 17. búsqueda samaccountname con comodines
- 18. NSFetchedResultsController con la búsqueda
- 19. Ocultando el cursor del mouse con glfw
- 20. jQuery - Siga el cursor con un DIV
- 21. IndexedDB getTodo en navegadores que no sean Firefox
- 22. Sincronizando datos del servidor MongoDB a un almacén local IndexedDB
- 23. HTML5 IndexedDB, Web y base de datos SQL navegador guerras
- 24. Acceso a IndexedDB desde múltiples hilos de JavaScript
- 25. Google Docs Cursor parpadeante "kix-cursor-caret"
- 26. Combinando el movimiento de búsqueda con tirón
- 27. ¿En qué se diferencia indexedDB conceptualmente del almacenamiento local HTML5?
- 28. Añadir índice preexistentes ObjectStore En IndexedDB uso de JavaScript
- 29. Búsqueda de Google con Python
- 30. Problema con la búsqueda facetada