A Reactive and Minimalistic Interface for IndexedDB with Promises (TypeScript supported)
Table of contents:
More on Wiki page:
IndexedDB is an in-browser database with slightly more advantages than other in-browser databases. For example more storage space, support more complex data structure. Although it APIs are complex to use.
ClientDB.js is a wrapper for IndexedDB with simple APIs, all requests return a promise.
Features:
- ✅ Basic CRUD (create, read, update, delete) data records backed by sophisticated IndexedDB
- ✅ Filter data using keys/indices
- ✅ Event subscribers (subscribe event when insert, remove, and update)
- TODO: paging, limit, relationship
var stores = [{
name: "Users",
keys: {
firstName: false,
lastName: false,
username: true
}
}]
var myDB = new ClientDB({ stores });
// Insert
myDB.collect("Users").insert({
_id: 'your_own_id', // auto
firstName: 'Peter',
lastName: 'Griffin',
username: 'peter_grif' // is unique
})
.then(({ items, changes}) => {
// items => Array(1) => [{ added record }]
// changes => { inserted: 1, removed: 0, updated: 0, unchage: 0 }
})
.catch(error => {
// error => { message }
})
ClientDB.js is available as npm module (supported TypeScript) and also works with plain Javascript. Follow one of the instructions below to install ClientDB.js to your project
$ npm install --save clientdb.js
Then import ClientDB
into your project
import ClientDB from 'clientdb.js';
// replace @x.x.x with current version
// Available through window.ClientDB or just ClientDB
<script src="https://unpkg.com/clientdb.js@0.1.4/dist/ClientDB.js"></script>
You can find API References, Build and Tests section on ClientDB.js Wiki Page. And feel free to create an issue related to this project or need any help.