Чи послідовність переміщень повинна зберігати ваші файли моделей відповідно до вашої бази даних?
Я використав sequelise cli для завантаження простого проекту та створення моделі node_modules/.bin/sequelize model:generate --name User --attributes email:string
. Я перемістив це без проблем.
Потім я створив наступний файл міграції, щоб додати нестандартне обмеження до атрибуту електронної пошти користувача.
оновити міграцію ел
const models = require("../models")
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.changeColumn(models.User.tableName, "email",{
type: Sequelize.STRING,
allowNull: false,
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.changeColumn(models.User.tableName, "email",{
type: Sequelize.STRING,
});
},
};
Схема бази даних оновлена, щоб додати обмеження, але файл моделі не був. Чи є спосіб автоматичного оновлення файлів моделі під час здійснення міграції?
Відповіді:
3 для відповіді № 1Чи є спосіб автоматичного оновлення файлів моделі, як ви зробити міграції?
На жаль, немає. Не існує рівня синхронізації між моделями серійних і міграцій, крім їх початкового створення з sequelize model:create
. Проте робочий процес, запропонований у цьому питанні, полягає в тому, що оновлення повинні поширюватися від міграції до моделі Це трошки заплутує мене, як правило, міграції повинні автоматично генеруватися від змін до моделей, а не обов'язково навпаки.
Були постійні відкриті проблеми, які відстежують ці функції, які вам можуть допомогти підписатися на:
- Генерувати початкову міграцію з моделі?
- Автоматичне створення міграцій
- Можна генерувати міграції, щоб оновити існуючі моделі?
Спільні пропозиції / рішення:
Відноситься до https://stackoverflow.com/a/28431648/8954866
Як було запропоновано, рішенням є перебудова моделей, що використовують sequelize-cli
при внесенні простих змін. Проте, існують чіткі обмеження для цієї методології, тому що багато конфігурацій неможливо визначити з cli, таких як асоціації.
Крім того, пакет npm продовження автоматичних переміщень існує, що забезпечує підтримку для породження міграції, однак це, здається, не надто активний проект.
Висновок:
Чи слід покращувати міграцію файлів моделей?
Sequelize
/sequelize-cli
ще не підтримує цю функцію.
Чи повинні ОРМ створювати інструменти автоматичного створення міграції? Так, це бажана функціональність, інакше розробники змушені порушувати такі принципи, як СУХИЙ і керувати однією логікою в різних файлах.