Má Sequelize migrácia udržiavať vaše modelové súbory v súlade s vašou databázou?
Použil som sekvenčné cli na zavedenie jednoduchého projektu a vytvorenie modelu node_modules/.bin/sequelize model:generate --name User --attributes email:string
, Migroval som to bez problémov.
Potom som vytvoril nasledujúci migračný súbor na pridanie obmedzenia notNull do atribútu e-mailu používateľa.
updateEmail migrácia
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,
});
},
};
Databázová schéma sa aktualizovala, aby pridala obmedzenie, ale súbor modelu nie. Existuje spôsob, ako automaticky aktualizovať súbory modelu počas migrácie?
odpovede:
3 pre odpoveď č. 1Existuje spôsob, ako automaticky aktualizovať súbory modelu, ako ste vy vykonať migráciu?
Bohužiaľ nie. Neexistuje žiadna úroveň synchronizácie medzi sekvenčnými modelmi a migráciou, s výnimkou ich počiatočného vytvorenia z sequelize model:create
, V tejto otázke sa však navrhuje postup šírenia aktualizácií z migrácia na modely. To ma trochu zmätí, pretože migrácie sa zvyčajne generujú automaticky zo zmien modelov, nie nevyhnutne naopak.
Pri sledovaní týchto funkcií, ktoré môžu byť užitočné na prihlásenie na odber, sa vyskytli stále otvorené problémy.
- Generovať počiatočnú migráciu z modelu?
- Automatické vytváranie migrácií
- Je možné generovať migrácie na aktualizáciu existujúcich modelov?
Návrhy a riešenia komunity:
Odkazujú na https://stackoverflow.com/a/28431648/8954866
Ako bolo navrhnuté, riešením je opätovné vytvorenie modelov pomocou sequelize-cli
pri zavádzaní jednoduchých zmien. Táto metodika však má jasné obmedzenia, pretože z konfigurácie nie je možné definovať mnoho konfigurácií, ako sú združenia.
Balík npm navyše sequelize-auto-migrácia existuje, ktorá poskytuje podporu pre generovanie migrácie, zdá sa však, že to nie je príliš aktívny projekt.
záver:
Mala by sekvenčná migrácia aktualizovať modelové súbory?
Sequelize
/sequelize-cli
túto funkciu zatiaľ nepodporuje.
Mali by ORM vytvoriť nástroje na automatické generovanie migrácie? Áno, je to požadovaná funkčnosť, pretože inak sú vývojári nútení porušovať zásady, ako sú DRY a spravovať rovnakú logiku v rôznych súboroch.