Saat ini tidak ada pilihan untuk menghasilkan model dengan atribut rinci. Anda dapat memeriksa kode yang bertanggung jawab di sini. Ini adalah kode yang cukup jelas. Mudah dimengerti.
Saya biasanya hanya membuatnya dengan nama dan tanpa bidang lalu salin tempel model saya ke file yang dihasilkan.
Ini dia modelnya.
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 });
Saya menjalankan sequelize-cli model:generate --name MyModel
dan salin tempel semua objek parameter init langsung di dalam file yang dihasilkan. Seperti ini:
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]
}
}
}
);
Tentu saja kami tidak memerlukan validasi di sini dan juga kami memerlukan beberapa bidang tambahan seperti Id dan kunci asing jika ada asosiasi satu ke banyak. Jangan lupa untuk menambahkan updatedAt dan CreatedAt jika Anda mengizinkan sekuel untuk menambahkannya ke instance model Anda.
Jadi hapus validasi dan tambahkan yang lain.
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'
}
}
);
Begitulah cara saya membuat migrasi dari model saya. Sayangnya sekuel cli tidak memiliki opsi terperinci untuk menghasilkan perintah. Tapi jangan ragu untuk menambahkan beberapa! Tarik dari github dan kerjakan. Akan menyenangkan untuk memiliki. Anda juga dapat mengotomatiskan proses yang dijelaskan ini dan menambahkannya sebagai perintah lain untuk membuat sekuel cli.