Bonestore
Simple app data management.
Installing
Using npm:
$ npm install bonestore
Example
First create Bonestore
instance.
It will be used to hold stores and provide default adapter.
; const data = defaultAdapter: baseURL: 'https://api.example.com/v1/' ;
Next define stores
// Simple data object { key: value }data; // Collection of objects [{key: value}, …]data;
Finally you can read/create/update/delete
data // GET https://api.example.com/v1/permissions ; data // GET https://api.example.com/v1/posts ; data // GET https://api.example.com/v1/posts/321 ; data // POST https://api.example.com/v1/posts ;
Watch store changes
data
API
Bonestore(config)
Configuration
defaultAdapter: adapterInstance
- default adapter for defined stores
Methods
defineStore(storeName, storeInstance)
- define storegetStore(storeName)
- return defined storeonStoreChange(storeName, callback)
- listen for changes in specific storeoffStoreChange(storeName, callback)
- stop listenemitChange(storeName, changeType, payload)
- emmit store change (for internal use in stores)
Stores
new Store(config)
find(params)
- find objectcreate(obj, params)
- overwriteupdate(obj, params)
- updatedelete(params)
- remove (empty object)
new CollectionStore(config)
find(id, params)
- find one itemfindAll(params)
- find list of itemscreate(obj, params)
- create new objectupdate(obj, params)
- update existing item (id must be provided)save(obj, params)
- update or create item when id does not existsdelete(id, params)
- delete one item
Store configuration
adapter: adapterInstance
- (optional) adapter instance
Warning: params
currently only work with HTTP adapter and are sent as query string.
Adapters
prefix: 'my_app_' // default ''
baseURL: '' timeout: 2000 // default 10s headers: {}
Extending stores
If you need more complex functionality, you can extend the Store class.
// PostsStore.js { return this; }
// data.jsdata;