node-migrate-mongo

3.0.0 • Public • Published

node-migrate-mongo

Migrations for MongoDB

build status npm version mit license we're hiring

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, and test)
  • 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.

Package Sidebar

Install

npm i node-migrate-mongo

Weekly Downloads

11

Version

3.0.0

License

MIT

Unpacked Size

32.8 kB

Total Files

13

Last publish

Collaborators

  • goodeggs-admin
  • bobzoller
  • serhalp