سلام استاد
طبق آموزش قسمت 45 من مدل رو ساختم و جدول هم ساخته شد. حالا اگر بخواهیم تغییری توی دیتابیس بدیم مثلاً یک فیلد اضافه کنیم راهش چیه؟ من فیلد جدید رو به مدل اضافه کردم ولی تغییری توی دیتابیس ایجاد نشد.
سلام دوست من
در دوره هم فکر کنم گفته بودم مثلا بعد از ساخت جداول یک column جدید میخوای اضافه کنی باید drop کنی تا دوباره ساخته بشه
اما در شرایطی ما داده داریم در پایگاه داده و نمیخوایم کلا پایگاه داده drop بشه برای اینکار باید از Migrations استفاده کنیم
فرض کن مدل User داریم و میخوایم فیلد جدید به این مدل اضافه کنیم
با استفاده از Sequelize-cli در روت پروژه دستور زیر رو اجرا میکنیم
npx sequelize-cli migration:create --name modify_users_add_new_fields
باید فولدر migrations ساخته بشه که درونش فایل هست و اگر بازش کنی باید تغییرات بدیم
مثلا
module.exports = {
up(queryInterface, Sequelize) {
return Promise.all([
queryInterface.addColumn(
'Users', // نام جدول
'twitter', // نام فیلد جدید که میخوای بسازی
{
type: Sequelize.STRING,
allowNull: true,
},
),
queryInterface.addColumn(
'Users',
'linkedin', // فیلد جدید دیگر
{
type: Sequelize.STRING,
allowNull: true,
},
),
queryInterface.addColumn(
'Users',
'bio', // فیلد جدید دیگر
{
type: Sequelize.TEXT,
allowNull: true,
},
),
]);
},
down(queryInterface, Sequelize) {
// logic for reverting the changes
return Promise.all([
queryInterface.removeColumn('Users', 'linkedin'),
queryInterface.removeColumn('Users', 'twitter'),
queryInterface.removeColumn('Users', 'bio'),
]);
},
};
بعد از پیاده سازی پیکربندی کافیه دستور زیر رو اجرا کنی
npx sequelize-cli db:migrate
موفق باشی