現在、詳細な属性を持つモデルを生成するオプションはありません。 ここで責任のあるコードを確認できます。 かなり明確なコードです。わかりやすい。
私は通常、名前を付けてフィールドなしで生成し、モデルをコピーして生成されたファイルに貼り付けます。
これがモデルです。
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]
}
}
}
);
もちろん、ここでは検証は必要ありません。また、1対多の関連付けがある場合は、IDや外部キーなどの追加フィールドが必要です。 sequelizeがモデルインスタンスに追加できるようにする場合は、updatedAtとcreatedAtを追加することを忘れないでください。
したがって、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には、generateコマンドの詳細なオプションがありません。ただし、自由に追加してください。 githubからプルして、作業します。持っていてよかったです。この説明されたプロセスを自動化し、cliを続編する別のコマンドとして追加することもできます。