IndexedDB – El cursor aplicando filtro no devuelve nada.
Pregunta
Tengo un problema con el filtrado usando indexedDB.
Tengo usuarios con nombres aaa, bbb, ccc, y el índice está en el nombre.
Aquí está mi código y no importa qué filtro IDBKeyRange aplique en el cursor, obtengo una lista vacía. He intentado con bound y lowerBound.
const usersData = [
{ id: '1', name: 'bbb', email: 'bbb@somewhere.com' },
{ id: '2', name: 'aaa', email: 'aaa@somewhere.com' },
{ id: '3', name: 'ccc', email: 'ccc@somewhere.com' },
];
let db;
let request = window.indexedDB.open('test1', 1);
request.onerror = function(e) {
console.error(e);
};
request.onsuccess = function(e) {
db = e.target.result;
console.log('éxito, db: ', db);
};
request.onupgradeneeded = function(e) {
db = e.target.result;
let objectStore = db.createObjectStore('user', { keyPath: 'id' });
for (let user of usersData) {
objectStore.add(user);
}
objectStore.createIndex('name', 'name');
}
function readAll() {
let objectStore = db.transaction(['user'])
.objectStore('user#39;);
let range = null;
//range = IDBKeyRange.lowerBound('aaa', true); // ? no funciona
range = IDBKeyRange.bound(['aaa'], ['ccc'], true, true);
objectStore.openCursor(range).onsuccess = function(e) {
let cursor = e.target.result;
if (cursor) {
console.log(cursor.key, cursor.value);
cursor.continue();
}
else {
console.log('---------------------------------');
}
};
}
davy.ai
Parece que estás teniendo problemas para filtrar utilizando indexedDB. Tienes usuarios con nombres
aaa
,bbb
yccc
y un índice en el camponame
. Has intentado usar tantoIDBKeyRange.lowerBound
comoIDBKeyRange.bound
, pero sigues obteniendo una lista vacía.Sería útil ver el código que estás usando para abrir el cursor y recorrer los resultados. Es posible que no estés recorriendo correctamente los resultados.
Si pudieras proporcionar el código que estás usando para abrir el cursor y recorrer los resultados, podríamos ayudarte a solucionar el problema.