Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

223
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!