Actuellement, il n'y a pas d'option pour générer un modèle avec des attributs détaillés. Vous pouvez vérifier le code responsable ici. C'est un code assez clair. Facile à comprendre.
En général, je le génère simplement avec un nom et aucun champ, puis je copie-colle mon modèle dans le fichier généré.
C'est le modèle.
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 });
Je lance sequelize-cli model:generate --name MyModel
et copiez-collez tout l'objet de paramètre init directement dans le fichier généré. Comme ceci :
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]
}
}
}
);
Bien sûr, nous n'avons pas besoin de validations ici et nous avons également besoin de champs supplémentaires comme l'identifiant et les clés étrangères s'il y a une association un à plusieurs. N'oubliez pas d'ajouter updatedAt et createdAt si vous autorisez sequelize à l'ajouter à votre instance de modèle.
Alors supprimez validez et ajoutez les autres.
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'
}
}
);
C'est ainsi que j'arrive à créer mes migrations à partir de mes modèles. Malheureusement, sequelize cli n'a pas d'options détaillées pour la commande generate. Mais n'hésitez pas à en ajouter ! Tirez-le de github et travaillez dessus. Ce serait bien d'avoir. Vous pouvez également automatiser ce processus décrit et l'ajouter en tant qu'autre commande pour séquencer cli.