Как передать массив экземпляров миграции в конфигурации umzug - PullRequest
0 голосов
/ 30 мая 2018

Я использую umzug для запуска миграций в моем приложении electronic-vue, потому что из-за веб-пакета я не могу использовать путь, например

migrations: {
    path: __dirname + '/../migrations',
    pattern: /\.js$/
}

Так что я слышал, что могу передавать экземпляры миграций, ноЯ не знаю, как мне это сделать.

Пока у меня есть это:

// sequelize initialization, etc...

let migrations = [
    require('../migrations/20180427160552-create-user'),
    require('../migrations/20180515205633-create-visits'),
    require('../migrations/20180515205633-create-vehicles')
];

var Umzug = require('umzug');
var umzug = new Umzug({
    storage: 'sequelize',
    storageOptions: {
    sequelize: sequelize
    },
    migrations: migrations
});
umzug.up().then(function (migrations) { });

1 Ответ

0 голосов
/ 20 августа 2018

Вы можете использовать customResolver

async function checkMigrations() {
  const umzug = new Umzug({
    storage: 'sequelize',
    storageOptions: {
      sequelize,
    },
    migrations: {
      params: [
        sequelize.getQueryInterface(),
        Sequelize,
        function() {
          throw new Error('Migration tried to use old style "done" callback.');
        }
      ],
      path: 'path/to/migrations',
      pattern: /\.js$/,
      customResolver: function(migrationFile) {
        return require(`./migrations/${path.basename(migrationFile, '.js')}`);
      }
    },
    logging: function() {
      console.log.apply(null, arguments);
    },
  });

  return umzug.up();
}

Смысл в том, чтобы использовать папку «prefix» как литерал, но не как переменную.Это не будет работать:

customResolver: function(migrationFile) {
    return require(`${some-path}/${some-file}`);
}

Но это будет:

customResolver: function(migrationFile) {
    return require(`/absolute-or-relative-prefix-folder/${filename-based-on-func-argument}`);
}
...