Search code examples
javascriptmicrosoft-edgeindexeddbweb-storage

indexedDb open onsucess without onupgradeneeded event


I am seeing that the indexedDb open request's on success callback is called even though the objectStoreNames list is empty.

I believe that the expected behavior is to have "onupgradeneeded" handler being called if objectStorenames.length is zero .

Does any one know why this could be happening ?

jsbin link

var db;
var DBOpenRequest = window.indexedDB.open("todos", 1);


DBOpenRequest.onerror = function(event) {
  console.error('error in open', event);
};

DBOpenRequest.onsuccess = function(event) {
  db = event.target.result;
  var objectStores =  db.objectStoreNames.length;
  console.log('success event, number of objectStores: ' +  objectStores);
};

DBOpenRequest.onupgradeneeded = function(event) {
  db = event.target.result;
  var objectStores =  db.objectStoreNames.length;

  console.log('upgradeneeded event, number of objectStores: ' +  objectStores);

  db.createObjectStore("toDoList", { keyPath: "taskTitle" }); 
};

Solution

  • The issue was that there was another piece of code was calling indexedDB.open, but not listening to upgradeneeded event.