我可以通过命令行slc工具将模型迁移到数据源吗?

时间:2015-08-21 23:35:44

标签: orm loopbackjs strongloop

我可以通过弧形工具的作曲家迁移模型,我可以在我的应用程序中编写一个小的node.js脚本,将模型自动迁移到我的MySQL数据库,配置为数据源,但我真的很喜欢简单地从slc命令行输入内容,作为我从命令行创建进程的一部分来迁移我的模型。例如:

slc loopback:migrate --datasources=server/datasources.json --model-config=server/model-config.json --datasource=mymysqldb

3 个答案:

答案 0 :(得分:1)

您可以通过在 /server/bin/automigrate.js

中创建脚本来实现
var path = require('path');
var app = require(path.resolve(__dirname, '../server'));


    var models = require(path.resolve(__dirname, '../model-config.json'));
    var datasources = require(path.resolve(__dirname, '../datasources.json'));

    function autoMigrateAll(){
        Object.keys(models).forEach(function(key) {
            if (typeof models[key].dataSource != 'undefined') {
                if (typeof datasources[models[key].dataSource] != 'undefined') {
                    app.dataSources[models[key].dataSource].automigrate(key, function (err) {
                        if (err) throw err;
                        console.log('Model ' + key + ' migrated');
                    });
                }
            }
        });
    }
    autoMigrateAll();

使用命令

运行

cd toYourProjectFolder

节点服务器/ bin / automigrate.js

确保您的 datasource.json 配置了MySQL 并应用于model-config.json

干杯

答案 1 :(得分:0)

你还不能从slc loopback命令行工具那样做。请随时在https://github.com/strongloop/loopback/issues提交功能请求。

目前,你必须创建一个简单的脚本来调用automigrate命令,就像你一直在做的那样。

答案 2 :(得分:0)

我有多种类型的数据库(连接器),所以我制作了适合我的脚本:

var path = require('path');
var app = require(path.resolve(__dirname, '../server'));

var dataSources = require(path.resolve(__dirname, '../datasources.json'));

autoUpdateAll();

// ------------------------------------

function autoUpdateAll(){
    Object.keys(dataSources).forEach(function(dataSourceName) {
        var dataSourceObj = app.dataSources[dataSourceName];
        if(!dataSourceObj) return;
        dataSourceObj.autoupdate(function(err, result) {
            if(err) return console.error(err);
            console.log('Datasource ' + dataSourceName + ' update (autoupdate();)');
        });
    });
}