user3446042
user3446042

Reputation: 9

Error while opening indexeddb with higher version than existing

var database = e.target.result;
var version =  Number(database.version);
console.log("in onsuccess>>>>>>>>>>>>>>>>>>>>>>>>>> : "+dbName);
console.log(e);     
database.close();
var secondRequest = indexedDB.open(dbName, (version+1));
console.log(secondRequest); // <-- error on this line

//console.log(secondRequest.result);
secondRequest.onupgradeneeded = function (e) {
    console.log("in onupgradeneeded>>>>>>>>>>>>>>>>>>>>>>>>>>");
    console.log(e);     
    var database = e.target.result;
    //database.setVersion(12);
    var objectStore = database.createObjectStore(storeName, {
        keyPath: 'id'
    });
};
secondRequest.onsuccess = function (e) {
    console.log("000000000000000000000000000000");
    e.target.result.close();
};

secondRequest.onerror = function(e){
    console.log("Error ------------------- ");
    console.log(e);
}

in above console I am getting following error in

console.log(secondRequest);

error:

IDBOpenDBRequest
error   :  [Exception: DOMException]

I have added listner

IDBOpenDBRequest.onerror = function(e){
}

But It is not going there. Help me if anybody have solution.

Upvotes: 0

Views: 310

Answers (1)

buley
buley

Reputation: 29248

Although you have some of the core concepts down, your code is really hard to follow as is. To begin with, this e event assignment is undefined:

var database = e.target.result; 

Where is the database open()? Where is dbName coming from?

Provide more of your failing code, preferably via jsfiddle, and we'll help you find a solution.

UPDATE: Here's a working example of what you're trying to do.

Output div:

<div id="idb_version"></div>

Code:

var db_name = 'myname',
    database_open_request = window.indexedDB.open(db_name);
database_open_request.addEventListener('success', function (e) {
    database = e.target.result;
    database.close();
    var second_database_open_request = window.indexedDB.open(db_name, database.version + 1);
    second_database_open_request.addEventListener('upgradeneeded', function (e) {
        database = e.target.result;
        database.close();
        window.document.getElementById("idb_version").innerHTML = database.version;
    });
});

When not specifying a version param, you get a reference to the most recent version on success callback. Then I listen for a versionchange and increase the version by one. Run this over and over and you'll see the version increase one by one.

Upvotes: 1

Related Questions