Created
January 3, 2013 16:26
-
-
Save sang4lv/4444696 to your computer and use it in GitHub Desktop.
IndexedDB: Add, Delete, and Get from Object Store
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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