/ / Mal by program Sequelize migrations aktualizovať modelové súbory? - sequelize.js, sequelize-cli

Mali by ste pokračovať v migrácii aktualizovať modelové súbory? - pokračovanie.js, pokračovanie-cli

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ď č. 1

Existuje 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.

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.