Storage is a functional wrapper around localForage. That means it's an asynchronous browser storage with multiple back-ends (IndexedDB, WebSQL, localStorage), which is built for a better offline experience.
The main differences with localForage:
- batch support
- error first node-style callbacks, fixes #55
- simple API inspired by yields/store
$ bower install storage
$ component install ask11/storage
$ npm install ask11-storage --save
Standalone build available as storage.js.
<script src="storage.js"></script>
<script>window.storage('key', fn);</script>
// set
storage('key', 'val', function(err) {});
storage({ key: 'foo', key2: 'val2'}, function(err) {});
// get
storage('key', function(err, val) {});
storage(['key', 'key2'], function(err, all) {}); // all.length == 2
// delete
storage('key', null, function(err) {});
storage(['key1', 'key2', 'key3'], null, function(err) {});
Get key
value.
Get group of values. Callbacks return array of values for each key. If key does not exist, it returns undefined for this position.
Set key
to val
.
You can store any kind of data, including blobs.
Delete key
. Null semantic is inspired by yields/store and component/cookie.
Setting a key to null
is equivalent to deleting the key via storage.del(key)
.
Run a batch operation. Simple way to create, update, remove multiple records.
// assume we have 2 records
storage('foo', 7, fn)
storage('bar', ['one', 'two', 'three'], fn);
storage({
baz: 'val' // create new val
foo: 1000, // update `foo` value
bar: null, // remove `bar`
}, function(err) {});
Delete a group of keys in one request.
It gives you access to the localForage instance. You can use it to configure backend.
storage.forage.config({ name: 'my-name' });
if (!window.indexedDB) storage.forage.setDriver('localStorageWrapper');
Clear storage.
Get the number of records in storage.
If you prefer more explicit API, you can use exposed functions.
storage.set('key', 'val', function(err) {});
storage.get('key', function(err, val) {}); // val
storage.del('key', function(err) {});
If you don't like callbacks, you can combine storage with then/promise.
var Promise = require('promise');
var orignal = require('storage');
var storage = Promise.denodeify(orignal);
storage('key').then(function(val) {});
Aleksey Kulikov, MIT.