১. প্রথমে একটি models ফোল্ডার তৈরি করুন
আপনার প্রজেক্টের মূল ফোল্ডারের মধ্যে models নামে একটি ফোল্ডার তৈরি করুন যেখানে সব মডেল থাকবে।
২. একটি মডেল তৈরি করা (User Model)
এখন, models ফোল্ডারে User.js নামে একটি ফাইল তৈরি করুন এবং এটি Sequelize এর Model ক্লাসটি ব্যবহার করে ডিফাইন করুন।
// models/User.js
const { DataTypes, Model } = require("sequelize");
const { sequelize } = require("../config/database"); // Correctly import the sequelize instance
class User extends Model {}
// Initialize the User model
User.init(
{
username: {
type: DataTypes.STRING,
allowNull: false,
},
email: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
},
password: {
type: DataTypes.STRING,
allowNull: false,
},
},
{
sequelize, // Pass the sequelize instance here
modelName: "User", // Define the model name
tableName: "users", // Define the table name
timestamps: true, // Automatically adds `createdAt` and `updatedAt` fields
}
);
module.exports = User;
ব্যাখ্যা: এখানে আমরা
Userক্লাস তৈরি করেছি যাModelক্লাস থেকে extends করা হয়েছে। এরপরUser.init()এর মাধ্যমে ফিল্ডগুলো ডিফাইন করেছি, যেমনusername,password।sequelizeএবং অন্যান্য সেটিংস এই init মেথডে পাস করেছি।
৩. ডাটাবেস সিঙ্ক করা
ডাটাবেসের সাথে মডেলগুলো সিঙ্ক করতে হলে database.js ফাইল আপডেট করতে পারেন যাতে সমস্ত মডেল ডাটাবেসের সাথে সঠিকভাবে সিঙ্ক হয়।
আপনার database.js ফাইলের শেষে নিচের কোডটি যোগ করুন:
// database.js ফাইলে
const User = require("../models/User"); // মডেল আমদানি করা
// সমস্ত মডেল সিঙ্ক করার জন্য ফাংশন তৈরি করা
async function syncModels() {
try {
// Import models after sequelize instance is created
const User = require("../models/User"); // Import User model here
await sequelize.sync({ alter: true }); // Sync models and create/update tables
console.log("All models were synchronized successfully.");
} catch (error) {
console.error("Error synchronizing models:", error);
}
}
module.exports = { sequelize, connect, syncModels };
ব্যাখ্যা:
syncModels()ফাংশনটি ডাটাবেসের সাথে মডেলগুলো সিঙ্ক করবে।alter: trueসেটিংটি ব্যবহার করে টেবিলের গঠন আপডেট করা যায়। এবং মডেল টি ইম্পোর্ট করেছি
৪. server.js এ মডেল সিঙ্ক করা এবং সার্ভার চালু করা
এখন, server.js ফাইল আপডেট করুন যেন syncModels() কল করার পরই সার্ভার চালু হয়।
const app = require("./app");
const config = require("./config/config");
const { connect, syncModels } = require("./config/database");
async function startServer() {
const isDbConnected = await connect();
// ডাটাবেস কানেকশন সফল হলে মডেল সিঙ্ক করা
if (isDbConnected) {
await syncModels(); // ডাটাবেসে টেবিল সিঙ্ক করা
app.listen(config.port, () => {
console.log(`Server is running on port ${config.port}`);
});
} else {
console.error("Failed to start server: Database connection failed.");
}
}
// সার্ভার চালু ফাংশন কল করা
startServer();৫. startServer() ফাংশন দিয়ে সার্ভার চালু করা
এখানে startServer() ফাংশনের মধ্যে ডাটাবেস কানেকশন চেক করার পরে syncModels() কল করা হচ্ছে। এটি ডাটাবেসের টেবিল তৈরি এবং আপডেট নিশ্চিত করবে, এবং পরে সার্ভার শুরু হবে।
সারসংক্ষেপ
এখন আপনার প্রজেক্টের স্ট্রাকচারটি হবে নিচের মত:
your-project/
├── config/
│ ├── config.js
│ ├── database.js
├── models/
│ └── User.js
├── app.js
├── server.js
└── .env
এটি করার পর, সার্ভার চালালে User টেবিল ডাটাবেসে তৈরি হবে (যদি এটি না থাকে) এবং কানেকশন সফল হলে সার্ভার চালু হবে।