UNPKG

ng-indexed-db

Version:

An IndexedDB Angular module wrapped in RXJS

107 lines (90 loc) 2.96 kB
# ng-indexed-db ng-indexed-db is an Angular module that wraps IndexedDB API in RXJS, transforming it into Observable ## Installation ```shell npm install ng-indexed-db ``` ## Usage Import the `IndexedDBModule` into your Module: ```typescript import { IndexedDBModule } from "ng-indexed-db"; @NgModule({ imports: [ IndexedDBModule.forRoot([ { name: 'todo_database', stores: [{ name: 'todo_store' }] } ]) ] }) export class AppModule {} ``` IndexedDBModule forRoot method requires a database metadata collection to create all the databases and table storage defined in the metadata. **Note:** IndexedDBModule takes the firts element of the databases collections as **Default Database** Database metadata type: ```typescript { // Database name name: string; // Stores collections stores: { // Store name name: string; }[]; } ``` All generated stores will have a keyPath with the value: 'id' Inject the `IndexedDB` service into your component. ```typescript export class AppComponent { $list: Observable<any>; constructor( private indexedDbService: IndexedDB ) { this.$list = this.indexedDbService.list('todo_table'); } } ``` ## Methods All methods recive an optional parameter that dfines the database name. If it doesn't recive a database name, the service takes the default database to do store requests. **list(storeName: string, databaseName?: string)** Returns an Observable with the table list result. ```typescript this.indexedDbService.list('todo_table').subscribe( response => // handle IndexedDb list result error => // handle IndexedDb request error ); ``` **create(storeName: string, data: any, databaseName?: string)** Store the given data. ```typescript this.indexedDbService.create('todo_table', {name: 'todo name'}).subscribe( response => // handle IndexedDb store result error => // handle IndexedDb request error ); ``` **update(storeName: string, data: any, databaseName?: string)** Updated stored data. ```typescript this.indexedDbService.update('todo_table', {name: 'todo name'}).subscribe( response => // handle IndexedDb update result error => // handle IndexedDb request error ); ``` **get(storeName: string, key: any, databaseName?: string)** Returns an Observable with the object found in the table by the given key ```typescript this.indexedDbService.get('todo_table', 'todo name').subscribe( response => // handle IndexedDb update result error => // handle IndexedDb request error ); ``` **delete(storeName: string, key: any, databaseName?: string)** Returns an Observable with the object found in the table by the given key ```typescript this.indexedDbService.delete('todo_table', 'todo name').subscribe( response => // handle IndexedDb update result error => // handle IndexedDb request error ); ```