Skip to content

A Reactive and Minimalistic Interface for IndexedDB with Promises (TypeScript supported)

License

Notifications You must be signed in to change notification settings

hieunc229/clientdb.js

Repository files navigation

ClientDB.js

A Reactive and Minimalistic Interface for IndexedDB with Promises (TypeScript supported)

Table of contents:

More on Wiki page:

1. Introduction

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

2. Quickstart

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 }
})

3. Installation

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

Install as NPM Module

$ npm install --save clientdb.js

Then import ClientDB into your project

import ClientDB from 'clientdb.js';

Install as In-browser Javascript Library

// replace @x.x.x with current version
// Available through window.ClientDB or just ClientDB
<script src="https://unpkg.com/[email protected]/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.

About

A Reactive and Minimalistic Interface for IndexedDB with Promises (TypeScript supported)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published