Я прочитал и протестировал миграцию Sequelize через sequelize-cli, а также библиотеку unzug для программной миграции.
Я хочу сделать несколько сложных задач, и я объясню позже. Перед этим я хочу убедиться, что мое понимание документации sequelize является правильным или нет.
Создание-первая-модель-и-миграция модель: команда создания генерирует файл модели и файл миграции.
Если вы используете sequelize-cli, тогда нам нужно создать таблицу, выполнив команду db: migrate.
В моем приложении для угловых электронов, сначала новый Sequelize, как показано ниже:
this.sequelize = new Sequelize(this.dbName, null, null, {
dialect: 'sqlite',
storage: storage,
operatorsAliases: false
});
//Define table model
this.userModel = this.sequelize.define('users', {
name: { type: Sequelize.STRING, allowNull: false },
});
// Use sync to create table
this.sequelize.sync();
Приведенный выше код не имеет проблем.
Вот мой первый вопрос: но если я хочу использовать файлы моделей в папках моделей (user.js и т. Д.), Как получить доступ из моего машинописного кода? а затем вызвать this.sequelize.sync ()?
Я знаю, что могу использовать библиотеку umzug и использовать ее для выполнения миграции всех файлов в папках миграции, чтобы создать таблицу для user.js и т. Д.
Причины, по которым я спрашиваю, состоят в том, что
Я хочу использовать версию для управления созданием и миграцией таблиц базы данных.
В Android у базы данных есть понятие версии, и если база данных еще не создана, она создаст все таблицы с последней схемой и не будет проходить каждую миграцию.
В зависимости от версии, я могу контролировать, с каких файлов миграции нужно запускаться.
Если миграция не удалась по какой-либо причине (на самом деле это не должно происходить), тогда я могу заставить ее удалить таблицы и снова создать таблицы с последней схемой. В этом случае приложение не выйдет из строя, даже если данные исчезнут.
Использование umzug,
- Хотя я могу предоставить массив задач миграции для выполнения
umzug.up (['20141101203500-task', '20141101203501-task-2']);
Но я не могу проверить, какие задачи уже выполнены. umzug.pending () не может проверить список, который я предоставил, он возвращает массив миграций со всеми остальными отложенными миграциями, а не из предоставленного массива задач. Если umzug.up ([список задач]) включает в себя уже выполненную миграцию, он выдаст ошибку, а остальные файлы миграции не будут запущены.
Есть ли другой способ решить это?
- В документации umzug Запуск определенных миграций при игнорировании правильного порядка можно сделать так:
umzug.up({ migrations: ['20141101203500-task', '20141101203501-task-2'] });
Таким образом, предоставляя список массивов, нельзя ли выполнять эти задачи по порядку в массиве? Umzug.up () выполняет задачи параллельно?