Hi, I'm just trying to use the Indexed Database Api, looking on web i found a simple code to test this api.
I've changed a lot of the original code to adapt it to my needs, and now i've a problem.
If i try to run the code on Chromium (v 23.0.1264.0 (156235)) it works really fine, but if i try the same code on Chrome (v 21.0.1180.89 m) it gives me a NotFoundError: DOM IDBDatabase Exception 8.
I'm using this script :
var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;
var IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction;
var db;
(function () {
function initDb() {
var request = indexedDB.open("UsersDB", 1);
request.onsuccess = function (evt) {
db = request.result;
};
request.onerror = function (evt) {
console.log("IndexedDB error: " + evt.target.errorCode);
};
request.onupgradeneeded = function (evt) {
var objectStore = evt.currentTarget.result.createObjectStore("users", { keyPath: "id", autoIncrement: true });
objectStore.createIndex("name", "name", { unique: false });
objectStore.createIndex("email", "email", { unique: true });
};
}
function contentLoaded() {
initDb();
var btnAdd = document.getElementById("btnAdd");
var btnDelete = document.getElementById("btnDelete");
var btnPrint = document.getElementById("btnPrint");
var btnClear = document.getElementById("btnClear");
btnAdd.addEventListener("click", function () {
var name = document.getElementById("txtName").value;
var email = document.getElementById("txtEmail").value;
var transaction = db.transaction(["users"], "readwrite");
var objectStore = transaction.objectStore("users");
var request = objectStore.add({ name: name, email: email });
request.onsuccess = function (evt) {
console.log("Record added!");
};
}, false);
btnDelete.addEventListener("click", function () {
var id = document.getElementById("txtID").value;
var transaction = db.transaction(["users"], "readwrite");
var objectStore = transaction.objectStore("users");
var request = objectStore.openCursor();
request.onsuccess = function(evt) {
var cursor = evt.target.result;
if (cursor) {
if(cursor.key == id){
var delReq = objectStore.delete(cursor.key);
delReq.onsuccess = function(evt){
console.log("Deleted!");
}
delReq.onerror = function(evt){
console.log("Not Deleted!");
}
}
cursor.continue();
}
};
request.onerror = function(evt){
console.log("Error!");
};
}, false);
btnPrint.addEventListener("click", function () {
var output = document.getElementById("printOutput");
output.textContent = "";
var transaction = db.transaction(["users"], "readonly");
var objectStore = transaction.objectStore("users");
var request = objectStore.openCursor();
request.onsuccess = function(evt) {
var cursor = evt.target.result;
if (cursor) {
output.textContent += "User: " + cursor.value.name + " email: " + cursor.value.email + " id: " + cursor.key + ".\n"; cursor.continue();
}else {
console.log("Records");
}
};
}, false);
btnClear.addEventListener("click", function () {
var transaction = db.transaction(["users"], "readwrite");
var objectStore = transaction.objectStore("users");
var request = objectStore.clear();
request.onsuccess = function (evt) {
console.log("All Records deleted!");
};
}, false);
}
window.addEventListener("DOMContentLoaded", contentLoaded, false);
})();//function()