IndexedDB
(mini) Einführung
in die
IndexedDB API
(mini) Einführung
in die
IndexedDB API
Promise APIlet mydb;
const req = window.indexedDB
.open("myDbName", 1);
req.onerror = console.error;
req.onsuccess =
() => mydb = req.result;
req.upgradeneeded = (e)=>{
var db = e.target.result;
var s1 = db.createObjectStore(
"projects", {keyPath:'id'});
var s2 = db.createObjectStore(
"users", {keyPath:'email'});
};
Zweiter Parameter von open definiert die Schema-Version.
Ändert sich diese (z.B. von 0 auf 1) wird upgradeneeded aufgerufen.
function addRow(
mydb, storage, data) {
return new Promise((ok,no) => {
let t = mydb.transaction(
storage, "readwrite");
let s = t.objectStore(storage);
let r = s.add(data);
r.onsuccess = ok;
r.onerror = no;
});
}
function getUser(mydb, email) {
return new Promise(found => {
const t = mydb.transaction(
"users", "readonly");
const s = t.objectStore("users");
const req = s.get(email);
req.onsuccess = () =>
found(req.result);
});
}
get erfolgen auf den keyPath.function setName(mydb, email, name)
return getUser(mydb, email)
.then(data => {
return new Promise((ok,no) => {
data.name = name;
const t = mydb.transaction(
"users", "readonly");
const s = t.objectStore("users");
const r = s.put(data);
r.onsuccess = ok;
})
});
}
Beim Ändern wird immer der gesamte Datensatz ersetzt. Oft wird der alte Datensatz gelesen, geändert und zurückgeschrieben.
function deleteUser(mydb, email) {
return new Promise((ok, fail) => {
const t = mydb.transaction(
"users", "readwrite");
const s = t.objectStore("users");
const r = s.delete(email);
r.onsuccess = ok;
r.onerror = fail;
});
}
get erfolgen das Löschen über den keyPath.localstorage.© Jens Hofschröer 2025
zineedit@nigjo.de