Attualmente non è possibile generare un modello con attributi dettagliati. Puoi controllare il codice responsabile qui. È un codice abbastanza chiaro. Facile da capire.
Di solito lo genero solo con il nome e senza campi e quindi copio e incollo il mio modello nel file generato.
Questo è il modello.
class MyModel extends Sequelize.Model { }
MyModel.init({
name: {
type: Sequelize.DataTypes.STRING(100),
allowNull: false,
validate: {
notNull: true,
notEmpty: true,
len: [2, 100]
}
},
description: {
type: Sequelize.DataTypes.STRING(5000),
allowNull: false,
validate: {
notNull: true,
notEmpty: true,
len: [100, 5000]
}
}
}, { sequelize: sequelizeInstance });
Eseguo sequelize-cli model:generate --name MyModel
e copia incolla tutto l'oggetto parametro init direttamente all'interno del file generato. In questo modo:
queryInterface.createTable(
'MyModel',
{
name: {
type: Sequelize.DataTypes.STRING(100),
allowNull: false,
validate: {
notNull: true,
notEmpty: true,
len: [2, 100]
}
},
description: {
type: Sequelize.DataTypes.STRING(5000),
allowNull: false,
validate: {
notNull: true,
notEmpty: true,
len: [100, 5000]
}
}
}
);
Ovviamente non abbiamo bisogno di convalide qui e abbiamo anche bisogno di alcuni campi extra come ID e chiavi esterne se esiste un'associazione da una a molte. Non dimenticare di aggiungere updateAt e createAt se consenti a sequelize di aggiungerlo alla tua istanza del modello.
Quindi rimuovi convalida e aggiungi gli altri.
queryInterface.createTable(
'MyModel',
{
id: {
type: Sequelize.DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: {
type: Sequelize.DataTypes.STRING(100),
allowNull: false
},
description: {
type: Sequelize.DataTypes.STRING(5000),
allowNull: false
},
createdAt: {
type: Sequelize.DataTypes.DATE,
allowNull: false,
},
updatedAt: {
type: Sequelize.DataTypes.DATE,
allowNull: false,
},
MyOtherModelId: {
type: Sequelize.DataTypes.INTEGER,
allowNull: false,
references: {
model: 'MyOtherModel'
},
onUpdate: 'cascade',
onDelete: 'restrict'
}
}
);
È così che riesco a creare le mie migrazioni dai miei modelli. Sfortunatamente, sequelize cli non ha opzioni dettagliate per generare il comando. Ma sentiti libero di aggiungerne un po'! Estrailo da github e lavoraci sopra. Sarebbe bello averlo. Puoi anche automatizzare questo processo descritto e aggiungerlo come un altro comando per seguire il cli.