Skip to content

Instantly share code, notes, and snippets.

@sang4lv
Created January 3, 2013 16:26
Show Gist options
  • Save sang4lv/4444696 to your computer and use it in GitHub Desktop.
Save sang4lv/4444696 to your computer and use it in GitHub Desktop.
IndexedDB: Add, Delete, and Get from Object Store
window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
window.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.msIDBTransaction;
window.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange || window.msIDBKeyRange;
if(!window.indexedDB) {
console.log("IndexDB is not supported on your browser");
}
function reportError(event) {
console.log("Error with Database. " + event.target.errorCode);
}
function reportResult(event) {
console.log("Got one. " + event.target.result);
}
var dbRequest = window.indexedDB.open("testDatabase"); //second optional positive integer database version can follow
var dbObject;
var 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: "Randy", age: 30, email: "randy@abc.com" }
];
dbRequest.onerror = reportError;
dbRequest.onsuccess = function(event) {
dbObject = dbRequest.result;
dbObject.onerror = reportError;
var transaction = dbObject.transaction(["customers"], "readwrite");
//first argument is a list of object stores the transaction will affect. Empty for all object stores.
//second argument is optional. By default, it's readonly
transaction.onerror = reportError;
transaction.oncomplete = reportResult;
var objectStore = transaction.objectStore("customers");
for(var i = 0; i < customerData.length; i++) {
var objectStoreAddRequest = objectStore.add(customerData[i]);
objectStoreAddRequest.onsuccess = reportResult;
}
var objectStoreDelRequest = objectStore.delete("444-44-4444");
objectStoreDelRequest.onerror = reportError;
objectStoreDelRequest.onsuccess = reportResult;
var objectStoreGetRequest = objectStore.get("555-55-5555");
objectStoreGetRequest.onerror = reportError;
objectStoreGetRequest.onsuccess = function(event) {
console.log(event.target.result.name, event.target.result.age, event.target.result.email);
};
};
dbRequest.onupgradeneeded = function(event) {
//Only used when alter object store structure
dbObject = dbRequest.result;
dbObject.onerror = reportError;
var customerObjectStore = dbObject.createObjectStore("customers", { keyPath: ssn });
customerObjectStore.createIndex("name", "name", {unique: false});
customerObjectStore.createIndex("email", "email", {unique: true});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment