1. Home
  2. Nodejs Boilerplate
  3. প্রজেক্ট তৈরী ও কনফিগ করা
  4. ৪। মডেল তৈরি করা

৪। মডেল তৈরি করা

১. প্রথমে একটি 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, email, এবং passwordsequelize এবং অন্যান্য সেটিংস এই 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 টেবিল ডাটাবেসে তৈরি হবে (যদি এটি না থাকে) এবং কানেকশন সফল হলে সার্ভার চালু হবে।

How can we help?