V současné době neexistuje možnost generování modelu s podrobnými atributy. Zde můžete zkontrolovat. /a> Je to docela jasný kód. Snadno pochopitelné.
Obvykle jej vygeneruji s názvem a bez polí a poté zkopíruji a vložím svůj model do vygenerovaného souboru.
Toto je model.
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 });
Spouštím sequelize-cli model:generate --name MyModel
a zkopírujte vložte veškerý objekt parametru init přímo do vygenerovaného souboru. Takhle:
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]
}
}
}
);
Samozřejmě zde nepotřebujeme ověření a také potřebujeme nějaká další pole, jako je Id a cizí klíče, pokud existuje jedna nebo více asociací. Nezapomeňte přidat updatedAt a createdAt, pokud povolíte sequelize přidat je do instance vašeho modelu.
Odeberte tedy ověření a přidejte ostatní.
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'
}
}
);
Tak se mi daří vytvářet migrace z mých modelů. Bohužel sequelize cli nemá žádné podrobné možnosti pro generování příkazu. Ale klidně nějaké přidejte! Vytáhněte to z githubu a pracujte na něm. Bylo by hezké mít. Tento popsaný proces můžete také zautomatizovat a přidat jej jako další příkaz k sequelizování cli.