Skip to content

Instantly share code, notes, and snippets.

@bsmth
Last active October 20, 2022 15:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bsmth/427078c8024a62ec8d14e326baeb04ad to your computer and use it in GitHub Desktop.
Save bsmth/427078c8024a62ec8d14e326baeb04ad to your computer and use it in GitHub Desktop.
Updating IndexedDB objectstore item by key
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