Created
July 24, 2020 08:31
-
-
Save fkmhrk/f8bd21114653be3b4985038524550f84 to your computer and use it in GitHub Desktop.
IndexedDBのサンプル
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
<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