npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

node-migrate-mongo

v3.0.0

Published

Migrations for MongoDB

Downloads

5

Readme

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.