node-migrate-mongo-orzfly
v1.6.0
Published
Migrations for MongoDB
Downloads
4
Maintainers
Readme
node-migrate-mongo
Migrations for MongoDB
node-migrate-mongo enables data migrations in your existing project. The state of your migrations is stored in the database specified in the mongo
property of your Migratefile.coffee
. By default, this collection is called migration_versions
. See the Usage section (and let's be honest: the code) for more information.
Despite the name, this module does not borrow from TJ's node-migrate, though it follows very similar conventions.
Usage
In your existing project where you'd like to have migrations:
npm install --save node-migrate-mongo
cat << EOF- > Migratefile.coffee
module.exports =
mongo: 'mongodb://localhost/your_db'
EOF
migrate generate --name my_first_migration
# edit it
migrate all
Migratefile Options
- beforeTest -- An async function called before running a migration test. By default sets
NODE_ENV=test
. - before -- An async function called before running a command. Useful for connecting your app to its database.
- after -- An async function called after running a command.
- afterTest -- An async function called after running a migration test.
- mongo -- A string or function that returns a mongo connection string.
- model -- A reference to your custom
MigrationVersion
model. - path -- The place to store your migration files. Defaults to
migrations
. - ext -- The extension for your migration files. Defaults to
coffee
. - template -- The template used when generating migrations.
- context -- Values provided as part of
this
within all migration functions (up
,down
, andtest
) - transform -- A function that allows you to transform migrations before they are run.
before/after callbacks are called in this order: [ beforeTest, before, after, afterTest ]
Migrations that take promises
One way to accomplish this is with a Migratefile
that looks like this, which
will allow you to define migrations with upPromise
, downPromise
, and
testPromise
functions:
var Promise = require 'bluebird';
module.exports = {
transform: function(migration) {
['up', 'down', 'test'].forEach(function(fn) {
var promiseVersion = migration[fn + "Promise"];
if (promiseVersion) {
migration[fn] = function(done) {
return Promise.resolve(promiseVersion()).nodeify(done);
};
}
});
return migration;
}
}
Contributing
Please follow our Code of Conduct when contributing to this project.
$ git clone https://github.com/goodeggs/node-migrate-mongo && cd node-migrate-mongo
$ npm install
$ npm test
Module scaffold generated by generator-goodeggs-npm.