idb-batch
Perform batch operation on IndexedDB
Create/update/remove objects from IndexedDB store in one transaction without blocking main tread. This module also manually validates unique indexes fixing bugs in WebKit and IndexedDBShim.
Example
Using idb-factory and ES2016 async/await syntax. Check test.js for more examples.
// open IndexedDB database with 2 storesconst db = await // modify object storeawait
batch(db: IDBDatabase, storeName: String, ops: Array|Object)
It creates readwrite
transaction to storeName
,
and performs ops
sequentially. It returns Promise
which resolves with results of each request.
Array notation is inspired by LevelUP.
Each operation is an object with 3 possible properties: type
, key
, value
.
type
is either add
, put
, or del
, and key
can be optional, when store has keyPath
and value contains it.
await
Object notation is a sugar on top of array notation for put
/del
operations.
Set key
to null
in order to delete value.
await
ConstraintError
If during sequential execution one of operations throws ConstraintError
,
Promise
rejects with error, but previous successful operations commit.
This behavior can change in future versions,
when I will figure out how to properly abort transaction in IndexedDBShim.