app-migrations
A helper module to define and execute app schema migrations.
Run on every start of your application with the previous and current version.
Makes sure that the correct migration steps are executed in the right order and
that downgrades are only allowed if there hasn't been a migration between the
two versions.
app-migrations uses semver to determine
version order.
Examples
Set up migrations
var migrations = {
'1.0.4': function(previousVersion, currentVersion, done) {
done(null, 'upgraded engine to support jetpack.');
},
'1.0.9': function(previousVersion, currentVersion, done) {
done(null, 'removed laser cannons, added photon cannons.');
}
};
var migrate = require('app-migrations')(migrations);
On every new launch, run migrate()
with previous and current version.
upgrade from 1.0.0 (got nothing) to 2.0.0 (need jetpack and photon cannons)
migrate('1.0.0', '2.0.0', function(err, res) {
if (err) return console.error('Error:', e.message);
console.log('Success:', res);
});
upgrade from 1.0.5 (we already got jetpacks) to 1.1.4 (need photon cannon)
migrate('1.0.5', '1.1.4', function(err, res) {
if (err) return console.error('Error:', e.message);
console.log('Success:', res);
});
upgrade from 1.0.4 to 1.0.4 (no changes needed)
migrate('1.0.4', '1.0.4', function(err, res) {
if (err) return console.error('Error:', e.message);
console.log('Success:', res);
});
downgrade from 1.0.8 to 1.0.6 (no internal changes, downgrade ok)
migrate('1.0.8', '1.0.6', function(err, res) {
if (err) return console.error('Error:', e.message);
console.log('Success:', res);
});
downgrade from 1.0.8 to 1.0.3 (incompatible due to internal changes)
migrate('1.0.8', '1.0.3', function(err, res) {
if (err) return console.error('Error:', e.message);
console.log('Success:', res);
});