Yet another mongoose migration tool
npm install mongoomigYet another mongoose migration tool
- Async/await is default concept
- Mongoose 4.11 support without deprecation warning
- Could be configured through command line arguments, environment
variables or config file
- No dependencies, just one peer dependency - mongoose
- Typescript support
Install with npm:
$ npm install mongoomig
1. Create a migration. The following command creates a new migration
file ./migrations/${date}-first-migration.js
$ mongoomig create first-migration
2. Write migration code
``js
'use strict';
const User = require('../models/User');
module.exports = {
async up() {
await User.create({ name: 'test-user' });
},
async down() {
await User.deleteOne({ name: 'test-user' });
},
};
`
3. Execute the migration
$ mongoomig up
4. (Optional) Add the migration command to package.json script:
``
"scripts": {
"start": "node index.js",
"migrate": "mongoomig up"
}
Also, you can check the example.
You can compile your modules before migration, or use ts-node instead:
`bash`
npm install -D ts-node
mongomig up --require ts-node/register
`sh
Usage: mongoomig [options]
Commands:
up [name] Migrate up till given migration
down [name] Migrate down till given migration
create
list Show migrations which are applied
Options:
-c, --config=
./migrations/config.js
-u, --url=
--collection=
-p, --path=
./migrations
--reconnectInterval=
--reconnectTries=
-r, --require=
-s, --silent Silent mode, defaults to false
-d, --debug Debug mode, defaults to false
`
Also, you can set a such options through environment variable. Just
set MONGOOMIG_
the MONGOOMIG_COLLECTION environment variable is equal to the collection
option.
Additionally, mongoomig tries to load the url option from the MONGO_URL
environment variable if another ways are not available.
Another way is to specify options inside a config. By default,
this package tries to read a config from migrations/config.js. Here is
the example of such a config:
`js
'use strict';
module.exports = {
url: 'mongodb://localhost/tiny-blog',
};
`
If you would like to run migrations from your code instead of command
line, you can use API.
`js
const Migration = require('mongoomig/lib/Migration');
const migration = new Migration({ path, url });
await migration.connect();
await migration.up();
``
A good example is index.js of this package.
Licensed under MIT.