angular-localforage-migrations
v3.1.0
Published
Migrate localForage data in an Angular app
Downloads
30
Maintainers
Readme
angular-localforage-migrations
Migrate localForage data in an Angular app
Usage
1. Depend on the angular-localforage-migrations
module
// commonjs users:
var app = angular.module('my-app', [require('angular-localforage-migrations')])
// everyone else:
var app = angular.module('my-app', ['angular-localforage-migrations'])
2. Add migrations to migrationsProvider
in a config block
app.config(function(migrationsProvider) {
migrationsProvider.add({
id: 1,
migrate: ['dep', function(dep) {
// migrate data here and return promise
}]
})
})
migration object passed to add()
Has required properties:
- id - Number greater than zero. The id field should increase for each migration. They do not have to be sequential and do not have to start at 1.
- migrate - An Angular injectable function. The $localForage service is injectable here along with Angular built-ins and your injectables. Should return a $q promise if doing async work.
3. Chain all data access off of migrations.migrate()
app.factory('my-data-service', function(migrations, $localForage) {
return {
getSomeData: function() {
return migrations.migrate().then(function() {
return $localForage.getItem('some-data')
})
}
}
})
migrations.migrate()
Returns promise fulfilled when all pending migrations have been run.
A really basic live example
git clone https://github.com/psalaets/angular-localforage-migrations.git
cd angular-localforage-migrations/example
bower install
- Open index.html in a browser
Namespacing considerations
If you are using this module in multiple apps on the same domain, you should supply a namespace for angular-localforage-migrations's internal data store.
That can be done on the migrationsProvider:
app.config(function(migrationsProvider) {
migrationsProvider.setInternalNamespace('unique-string-for-app')
})
Install
npm
npm install angular-localforage-migrations --save
bower
bower install angular-localforage-migrations --save
Dependencies
This module can be used with browserify or by exposing global variables.
It assumes these modules are already loaded or can be required:
See of example/index.html for example of load order.
License
MIT