Last active
October 20, 2022 15:20
-
-
Save bsmth/427078c8024a62ec8d14e326baeb04ad to your computer and use it in GitHub Desktop.
Updating IndexedDB objectstore item by key
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
const 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" }, | |
]; | |
const dbName = "my_database"; | |
const request = indexedDB.open(dbName, 2); | |
request.onerror = (event) => { | |
console.log(event); | |
}; | |
request.onupgradeneeded = (event) => { | |
const db = event.target.result; | |
const objectStore = db.createObjectStore("customers", { keyPath: "ssn" }); | |
objectStore.createIndex("name", "name", { unique: false }); | |
objectStore.createIndex("email", "email", { unique: true }); | |
objectStore.transaction.oncomplete = (event) => { | |
const customerObjectStore = db | |
.transaction("customers", "readwrite") | |
.objectStore("customers"); | |
customerData.forEach((customer) => { | |
customerObjectStore.add(customer); | |
}); | |
}; | |
}; | |
let db; | |
const DBOpenRequest = indexedDB.open(dbName, 2); | |
DBOpenRequest.onsuccess = (event) => { | |
// store the result of opening the database in db. | |
db = DBOpenRequest.result; | |
console.log(db); | |
const transaction = db.transaction(["customers"], "readwrite"); | |
transaction.oncomplete = (event) => { | |
console.log("All done!"); | |
}; | |
const objectStore = transaction.objectStore("customers"); | |
const countRequest = objectStore.count(); | |
countRequest.onsuccess = () => { | |
console.log( | |
"There are " + countRequest.result + " items in the objecstore" | |
); | |
}; | |
const request = objectStore.get("444-44-4444"); | |
request.onerror = (event) => { | |
console.log(event); | |
}; | |
request.onsuccess = (event) => { | |
console.log(event); | |
console.log(`Name for SSN 444-44-4444 is ${request.result.name}`); | |
const data = event.target.result; | |
// update the value(s) in the object that you want to change | |
data.age = 42; | |
data.name = "Alice"; | |
// Put this updated object back into the database. | |
const requestUpdate = objectStore.put(data); | |
requestUpdate.onerror = (event) => { | |
console.log(event); | |
}; | |
requestUpdate.onsuccess = (event) => { | |
console.log(event); | |
}; | |
}; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment