|
runTest( |
|
'test' + Date.now(), |
|
1, |
|
'requests', |
|
).then(console.log) |
|
|
|
function runTest(dbName, dbVersion, objectStoreName) { |
|
return new Promise((resolve, reject) => { |
|
console.log('starting') |
|
const connection = indexedDB.open(dbName, dbVersion) |
|
connection.onupgradeneeded = function(event) { |
|
console.log('upgrading') |
|
const db = event.target.result |
|
db.onerror = console.error |
|
const objectStore = db.createObjectStore(objectStoreName) |
|
} |
|
|
|
connection.onsuccess = e => { |
|
console.log('opened1') |
|
const db = e.target.result |
|
const transaction = db.transaction([objectStoreName], 'readwrite') |
|
const objectStore = transaction.objectStore([objectStoreName]) |
|
objectStore.add({ blah: 1 }, 1).onsuccess = function() { |
|
console.log('req1 success') |
|
} |
|
objectStore.add({ blah: 2 }, 2).onsuccess = function() { |
|
console.log('req2 success') |
|
} |
|
objectStore.add({ blah: 3 }, 3).onsuccess = function() { |
|
console.log('req3 success') |
|
} |
|
objectStore.add({ blah: 4 }, 4).onsuccess = function() { |
|
console.log('req4 success') |
|
modifyWhileOpen(dbName, dbVersion, objectStoreName).then(() => { |
|
console.log('closing1') |
|
db.close() |
|
resolve('done') |
|
}) |
|
} |
|
} |
|
}) |
|
} |
|
|
|
function modifyWhileOpen(dbName, dbVersion, objectStoreName) { |
|
return new Promise((resolve, reject) => { |
|
const conn = indexedDB.open(dbName, dbVersion) |
|
conn.onsuccess = e => { |
|
console.log('opened2') |
|
const db = e.target.result |
|
const transaction = db.transaction([objectStoreName], 'readwrite') |
|
const objectStore = transaction.objectStore([objectStoreName]) |
|
const request = objectStore.openCursor() |
|
request.addEventListener('success', e => { |
|
const cursor = e.target.result |
|
if (cursor) { |
|
const val = cursor.key |
|
if (val % 2 === 0) { |
|
const delReq = cursor.delete() |
|
delReq.onsuccess = () => { |
|
console.log('delete success for ' + val) |
|
} |
|
} |
|
console.log('cursor continue') |
|
cursor.continue() |
|
return |
|
} |
|
console.log('closing2') |
|
db.close() |
|
return resolve() |
|
}) |
|
} |
|
}) |
|
} |