idb-schema
IndexedDB schema manager.
This modules provides declarative schema management API for IndexedDB. And it also fixes inconsistency between browsers:
- Incorrect value of oldVersion in Safari during
onupgradeneeded
event - InvalidAccessError in Internet Explorer, when autoIncrement or keyPath are
false
Installation
npm install --save idb-schema
Use IndexedDBShim to fallback to WebSQL.
Example
// define schemaconst schema = version1 version2 version3 version4 // get schema versionschemaversion // 4 // generate callback for db.onupgradeneeded eventschema // get description of storesschema// [{ name: 'books', indexes: [{..}, {..}, {..}], keyPath: 'isbn' },// { name: 'magazines', indexes: [{..}] }]
API
schema.callback()
Generate onupgradeneeded
callback.
const req = indexedDBreqonupgradeneeded = schemareq { const db = etargetresult}
schema.stores()
Get JSON representation of database schema.
schema.version([number])
Get current version or set new version to number
and reset current store.
Use it to separate migrations on time.
schema.addStore(name, [opts])
Create object store with name
.
Options:
key
||keyPath
- primary key (default: null)increment
||autoIncrement
- increment key automatically (default: false)
schema.delStore(name)
Delete store by name
.
schema.getStore(name)
Switch current store. Use it to make operations with indexes.
schema.addIndex(name, field, [opts])
Create index with name
and to field
(or array of fields).
Options:
unique
- (default: false)multi
||multiEntry
- (default: false)
schema.delIndex(name)
Delete index by name
from current store.
schema.addCallback(cb)
Add cb
to be executed at the end of the upgradeneeded
event.
schema.clone()
Return a deep clone of current schema.