node-migrate-mongo
v3.0.0
Published
Migrations for MongoDB
Downloads
17
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
JavaScript variants
Your Migratefile file can be any JavaScript variant recognized by interpret. Just make sure to use the right file extension. For CoffeeScript, use the .coffee
extension. For Babel, use the .babel.js
extension.
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.url -- (required) A MongoDB connection string.
- mongo.options -- An options object passed to the MongoDB client connection.
- 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.