Skip to content

Instantly share code, notes, and snippets.

@fkmhrk
Created July 24, 2020 08:31
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 fkmhrk/f8bd21114653be3b4985038524550f84 to your computer and use it in GitHub Desktop.
Save fkmhrk/f8bd21114653be3b4985038524550f84 to your computer and use it in GitHub Desktop.
IndexedDBのサンプル
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<script type="text/javascript">
const openIndexedDB = (name, version, onupgradeneeded) =>
new Promise((resolve, reject) => {
const r = indexedDB.open(name, version);
r.onupgradeneeded = (ev) => {
const db = ev.target.result;
onupgradeneeded(db);
};
r.onsuccess = (ev) => resolve(ev.target.result);
r.onerror = (ev) => reject(ev);
});
const putData = (db, storeName, value) =>
new Promise((resolve, reject) => {
const tr = db.transaction([storeName], "readwrite");
const store = tr.objectStore(storeName);
const request = store.put(value);
tr.oncomplete = () => resolve();
tr.onerror = (err) => reject(err);
});
const getAll = (db, storeName) =>
new Promise((resolve, reject) => {
const tr = db.transaction([storeName]);
const store = tr.objectStore(storeName);
const request = store.getAll();
request.onsuccess = (ev) => resolve(ev.target.result);
request.onerror = (err) => reject(err);
});
const getByKey = (db, storeName, key) =>
new Promise((resolve, reject) => {
const tr = db.transaction([storeName]);
const store = tr.objectStore(storeName);
const request = store.get(key);
request.onsuccess = (ev) => resolve(ev.target.result);
request.onerror = (err) => reject(err);
});
(async () => {
const db = await openIndexedDB("test", 1, (db) => {
db.createObjectStore("myStore", { keyPath: "id" });
});
await putData(db, "myStore", { id: "1234", name: "moke" });
const items = await getAll(db, "myStore");
console.log(items);
const item = await getByKey(db, "myStore", "1234");
console.log(item);
})();
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment