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

211
Vistas
indexedDB Error createObjectStore cuando se usa dentro de onMount fn con sveltekit

Primera vez que intento usar indexedDB. Intento crear una tienda de objetos, pero recibo el error que se comparte a continuación. Nunca antes había usado indexeddb en sveltekit, así que no tengo idea de cómo solucionarlo.

Creé un sveltekit básico siguiendo los pasos descritos en su documento. En index.svelte, importé onMount fn y escribí lo siguiente

importar { getContext, onMount } desde 'esbelto'; import { detach_before_dev } from 'svelte/internal';

 onMount(async () => { const request = indexedDB.open("okdb", 1) request.onerror = (event) => { console.error('Database error:' , event); }; request.onsuccess = (event) => { console.log("onsuccess log :", event) let db = event.target.result; // create the Contacts object store // with auto-increment id let store = db.createObjectStore('Contacts', { autoIncrement: true }); }; })

Obtuve el siguiente error:

 index.svelte? [sm]:42 Uncaught DOMException: Failed to execute 'createObjectStore' on 'IDBDatabase': The database is not running a version change transaction. at IDBOpenDBRequest.request.onsuccess (http://localhost:5000/src/routes/index.svelte:121:19)

Veo la base de datos creada en la pestaña de la aplicación de herramientas de desarrollo, pero aparece el error anterior cada vez que intento crear createObjectStore. Parece un procedimiento sencillo de creación de objetos y no debería dar ningún error.

¿Alguna idea de por qué o cómo solucionarlo? No necesito importar la aplicación/navegador evn desde el sveltekit, ¿verdad?

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

0

Después de leer el documento, está claro que onupgradeneeded debe incluir una nueva versión para desencadenar la creación de ObjectStore.

Aumentar la versión de db

 const request = indexedDB.open("okdb", 2)

Se activará cuando se necesite una actualización, lo que le permitirá crear ObjectStore de esta manera:

 let customerData = [ {ssn:"444-44-4444",name:"Bill",age:35,email:"bill@company.com"}, {ssn:"555-55-5555",name:"Donna",age:32,email:"donna@home.org"}, {ssn:"666-66-6666",name:"Simone",age:10,email:"Simone@home.org"} ]; request.onupgradeneeded = function(event) { let db = event.target.result console.log("onupgadeneeded log :", event.target.result) //adding new objectstore var objectStore5 = db.createObjectStore("customers5",{keyPath:"ssn"}); objectStore5.createIndex("name","name",{unique:false}); objectStore5.createIndex("email","email",{unique:true}); for(var i in customerData){ objectStore5.add(customerData[i]); }

Luego, desde allí, puede realizar el resto de las operaciones básicas.

 var transaction = db.transaction(["customers"], "readwrite"); // Do something when all the data is added to the database. transaction.oncomplete = event => { console.log("All done!"); }; transaction.onerror = event => { // Don't forget to handle errors! }; var objectStore = transaction.objectStore("customers"); customerData.forEach(customer => { var request = objectStore.add(customer); request.onsuccess = event => { // event.target.result === customer.ssn; };

});

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