JSFiddle - React, Tailwind, and code Playground
JavaScript
indexedDB.deleteDatabase('foo').onsuccess = function () {
var idb;
var req = indexedDB.open('foo');
var docs = [ { my_index: new Date().getTime() } ];
function writeDocs(docs) {
if (!docs.length) {
console.log('done writing');
return;
}
var txn = idb.transaction(['some_store_name'], 'readwrite');
var doc = docs.shift();
console.log('writing', doc);
var get = txn.objectStore('some_store_name').index('my_index')
.get(doc.my_index);
get.onsuccess = function(e) {
var key = null;
if (e.target.result) {
// If there is a result here, I want to overwrite it
// to do that I need its key, cant find it here?
console.log(e.target.result);
}
var dataReq = key ? txn.objectStore('some_store_name').put(doc, key) : txn.objectStore('some_store_name').put(doc);
dataReq.onsuccess = function (e) {
key = e.target.result;
writeDocs(docs);
}
dataReq.onerror = function () {
console.log('it broke');
writeDocs(txn, docs);
}
}
};
req.onupgradeneeded = function(e) {
var db = e.target.result;
db.createObjectStore('some_store_name', {autoIncrement : true})
.createIndex('my_index', 'my_index', {unique: true});
};
req.onsuccess = function(e) {
idb = e.target.result;
writeDocs(docs);
};
}