east-mongo
Version:
mongodb adapter for east (node.js database migration tool)
110 lines (77 loc) • 3.47 kB
Markdown
# east mongo
mongodb adapter for [east](https://github.com/okv/east) (node.js database migration tool) which uses
[mongodb native driver](http://mongodb.github.io/node-mongodb-native/)
*Please note* that mainstream mongodb adapter version (>= 1.x) requires
east >= 1.x, for using adapter with older east versions (prior to 1.x) please
use mongodb adapter version < 1.x.
All executed migrations names will be stored at `_migrations` collection in the
current database. Object with following properties will be passed to `migrate`
and `rollback` functions:
* `db` - instance of [mongodb native db](http://mongodb.github.io/node-mongodb-native/3.4/api/Db.html)
* `dropIndexIfExists` function(collection, index, [callback]) - helper function
which can be used for dropping index in safe way (contrasting to
`collection.dropIndex` which throws an error if index doesn't exist). This
function returns promise and can be used that way instead of providing
callback.
east mongo package also provides following migration templates:
* [lib/migrationTemplates/promises.js](lib/migrationTemplates/promises.js) -
default migration template, uses built-in `Promise` in `migrate`,
`rollback` functions.
* [lib/migrationTemplates/async.js](lib/migrationTemplates/async.js) -
migration template that uses async functions to describe `migrate`,
`rollback` functions.
Default migration template will be used if `template` is not set. To get path
of another template `require.resolve` could be used, e.g. at `.eastrc`:
```js
module.exports = {
template: require.resolve('east-mongo/lib/migrationTemplates/async.js')
}
```
[](https://www.npmjs.org/package/east-mongo)
[](https://travis-ci.org/okv/east-mongo)
[](https://coveralls.io/github/okv/east-mongo?branch=master)
[](https://snyk.io/test/npm/east-mongo)
## Node.js compatibility
east mongo requires node.js >= 4 to work.
## Installation
mongodb adapter requires `mongodb` package as peer dependency (versions 2.x and
3.x are supported), so you should install it manually along side with east:
```sh
npm install east east-mongo mongodb@3
```
alternatively you could install it globally
## Usage
Sample `.eastrc` content:
```js
{
"adapter": "east-mongo",
"url": "mongodb://localhost:27017/test",
"options": {
"server": {
"socketOptions": {
"socketTimeoutMS": 3600000
}
}
}
}
```
where `url` is url of database which you want to migrate (in
[mongodb native url connection format](http://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.html#the-url-connection-format)) and `options` is optional settings
(see [connect method specification](http://mongodb.github.io/node-mongodb-native/3.4/api/MongoClient.html#.connect)).
Migration files created with default `template` that comes with adapter will
look like:
```js
exports.tags = [];
exports.migrate = function(params) {
const db = params.db;
return Promise.resolve();
};
exports.rollback = function(params) {
const db = params.db;
return Promise.resolve();
};
```
See east [cli](https://github.com/okv/east#cli-usage) or
[library](https://github.com/okv/east#library-usage) usage for more details.
## License
MIT