This loopback component enables you to migrate the database and import datas automatcally for the loopback application.
- Install in you loopback project:
npm install --save loopback-component-auto-migrate
-
Create a component-config.json file in your server folder (if you don't already have one)
-
Configure options inside
component-config.json
:
{
"loopback-component-auto-migrate": {
"enabled": true,
"raiseError": false,
"migration": "auto-migrate-data",
"models": ["Role"],
"fixtures": "./test/fixtures/"
}
}
enabled
Boolean: optional, whether enable this component. defaults: trueraiseError
Boolean: optional, whether raise error. defaults: false- it wont stop to import data if not raise error.
migration
String : optional, the migration ways:- "auto-migrate": drop and recreate the tables of the database.
- "auto-migrate-data": drop and recreate the tables, load datas from
fixtures
folder. - "auto-update" defaults: update the tables of the databse.
- "auto-update-data": update the tables, load datas from
fixtures
folder. - "auto-load-data": load datas from
fixtures
folder.
models
[array of String]|String: optional, the models to process. defaults to the all models in the model-config.json- String: a config file location can be used instead of passing all list inside component-config.json. eg
"./test/models/model-list"
(you can use yaml, json or cson format by its extension name)
- String: a config file location can be used instead of passing all list inside component-config.json. eg
fixtures
String: the datas folder to import.- the file base name is the lowercase model name with dash seperated if any.
- the file extension name is the data file format, the following format is supported:
- cson
- yaml
- json
Just enable it on component-config.json
.
or run node_modules/.bin/slc-migrate
directly.
set DEBUG=loopback:component:autoMigrate:*
env variable to show debug info.
When it runs through component-config.json
, it is attaching the autoMigrate
promise at app.get('loopback-component-auto-migrate-done')
that you can use to know when all migrations, data importing etc have finished.
Also the loopback-component-auto-migrate-status
will be set for convenience:
- 'loaded': autoMigrate loaded.
- 'failed': autoMigrate failed.
- 'done': autoMigrate successful.
autoMigrate = require('loopback-component-auto-migrate/lib/auto-migrate');
autoMigrate(app, {models:['Role'], fixtures: 'yourDataFolder'}).then()
Migration can be disabled for the model if you specify skipMigration
option in the ./server/model-config.json
file:
{
...
"customModel": {
"dataSource": "datasource",
"public": true,
"options": {
"skipMigration": true
}
}
...
}
- attaching done Promise at the app.
- hasMany relation data supports.