В момента няма опция за генериране на модел с подробни атрибути. Можете да проверите отговорния код тук
Обикновено просто го генерирам с име и без полета и след това копирам и поставям моя модел в генерирания файл.
Това е моделът.
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 });
Пускам sequelize-cli model:generate --name MyModel
и копирайте, поставете целия обект на параметрите на init директно вътре в генерирания файл. Като това:
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]
}
}
}
);
Разбира се, тук не се нуждаем от валидации, а също така се нуждаем от допълнителни полета като идентификатор и външни ключове, ако има една към много асоциации. Не забравяйте да добавите updatedAt и createdAt, ако разрешите на sequelize да го добави към вашия модел.
Така че премахнете validate и добавете останалите.
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'
}
}
);
Така успявам да създам своите миграции от моите модели. За съжаление sequelize cli няма подробни опции за генериране на команда. Но не се колебайте да добавите някои! Извадете го от github и работете върху него. Би било хубаво да има. Можете също така да автоматизирате този описан процес и да го добавите като друга команда за секвализиране на cli.