Sequelize হল একটি জনপ্রিয় ORM (Object-Relational Mapping) লাইব্রেরি যা Node.js-এ ডাটাবেসের সঙ্গে কাজ করতে সহজ এবং কার্যকর উপায় প্রদান করে। এটি MySQL, PostgreSQL, MariaDB, এবং SQLite সহ বেশ কিছু ডাটাবেস সিস্টেমের সাথে কাজ করতে সক্ষম। Sequelize-এর মাধ্যমে আপনি SQL কোড লেখা ছাড়াই ডাটাবেসে CRUD (Create, Read, Update, Delete) অপারেশন করতে পারবেন।
এখানে আমরা দেখবো কিভাবে ExpressJS অ্যাপ্লিকেশন তৈরি করে Sequelize ORM ব্যবহার করে MySQL বা PostgreSQL ডাটাবেস ইন্টিগ্রেট করা যায়।
১. প্রারম্ভিক সেটআপ
১.১. Node.js ও ExpressJS ইনস্টল করা
প্রথমে ExpressJS অ্যাপ তৈরি করতে express প্যাকেজ ইনস্টল করতে হবে। এবং sequelize ও ডাটাবেসের ড্রাইভার (MySQL/PostgreSQL) ইনস্টল করতে হবে।
npm init -y # নতুন Node.js প্রোজেক্ট তৈরি করা
npm install express sequelize mysql2 # MySQL এর জন্য
PostgreSQL ব্যবহার করলে mysql2 এর পরিবর্তে pg এবং pg-hstore ইনস্টল করতে হবে:
npm install express sequelize pg pg-hstore # PostgreSQL এর জন্য
২. Sequelize কনফিগারেশন ও সংযোগ স্থাপন
ExpressJS অ্যাপ্লিকেশন এবং Sequelize-এর মধ্যে সংযোগ স্থাপন করতে sequelize কনফিগারেশন ফাইল তৈরি করতে হবে।
২.১. Sequelize ইনস্টলেশন ও কনফিগারেশন ফাইল তৈরি
sequelize প্যাকেজটি ইনস্টল করার পর, একটি sequelize.js ফাইল তৈরি করুন যেখানে ডাটাবেসের সাথে সংযোগ স্থাপন করা হবে।
// sequelize.js
const { Sequelize } = require('sequelize');
// MySQL বা PostgreSQL কনফিগারেশন
const sequelize = new Sequelize('database_name', 'username', 'password', {
host: 'localhost',
dialect: 'mysql', // অথবা 'postgres' যদি PostgreSQL ব্যবহার করেন
});
sequelize.authenticate()
.then(() => {
console.log('Connection has been established successfully.');
})
.catch(err => {
console.error('Unable to connect to the database:', err);
});
module.exports = sequelize;
এখানে:
database_name: আপনার ডাটাবেসের নাম।username: ডাটাবেসের ইউজারনেম।password: ডাটাবেসের পাসওয়ার্ড।host: ডাটাবেস সার্ভারের ঠিকানা (অধিকাংশ সময়localhostহয়)।dialect: ডাটাবেসের ধরন, যেমনmysqlবাpostgres।
৩. ডাটাবেস মডেল তৈরি করা
Sequelize-এর মাধ্যমে ডাটাবেসে টেবিল তৈরি করতে এবং ডেটার অপারেশন করতে মডেল তৈরি করতে হয়। প্রতিটি মডেল ডাটাবেসের একটি টেবিলের প্রতিনিধিত্ব করে।
৩.১. মডেল তৈরি করা
যেমন, একটি User টেবিল তৈরি করতে:
// models/User.js
const { DataTypes } = require('sequelize');
const sequelize = require('../sequelize'); // sequelize.js থেকে ইনপোর্ট করা
const User = sequelize.define('User', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
},
firstName: {
type: DataTypes.STRING,
allowNull: false,
},
lastName: {
type: DataTypes.STRING,
allowNull: false,
},
email: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
}
}, {
// অপশনাল সেটিংস
timestamps: true, // ডেটাবেসে টেবিলের জন্য createdAt এবং updatedAt কলাম যোগ করা
});
module.exports = User;
এখানে User মডেলটি একটি User টেবিল তৈরি করবে যার মধ্যে id, firstName, lastName, এবং email কলাম থাকবে।
৪. মডেল সিঙ্ক করা
ডাটাবেসের সাথে মডেল সিঙ্ক করার জন্য Sequelize-এ sync() মেথড ব্যবহার করা হয়। এটি টেবিল তৈরি বা মডেলের সাথে মিলিয়ে ডাটাবেস আপডেট করে।
const sequelize = require('./sequelize'); // sequelize.js ইনপোর্ট করা
const User = require('./models/User'); // User মডেল ইনপোর্ট করা
// সিঙ্ক করে টেবিল তৈরি করা
sequelize.sync({ force: true }) // force: true দিয়ে টেবিল রিপ্লেস করবে
.then(() => {
console.log("Database synced!");
})
.catch(err => {
console.error("Unable to sync database:", err);
});
এখন আপনি যদি এই স্ক্রিপ্টটি চালান, তাহলে User টেবিলটি ডাটাবেসে তৈরি হবে।
৫. Express অ্যাপ্লিকেশন তৈরি এবং API রাউটিং
এখন Express অ্যাপ্লিকেশন তৈরি করতে হবে এবং Sequelize ব্যবহার করে ডাটাবেসে ডেটা CRUD অপারেশন করতে হবে।
৫.১. Express অ্যাপ তৈরি করা
// app.js
const express = require('express');
const sequelize = require('./sequelize'); // sequelize.js থেকে ইনপোর্ট করা
const User = require('./models/User'); // User মডেল ইনপোর্ট করা
const app = express();
const port = 3000;
app.use(express.json()); // JSON ডেটা রিকোয়েস্ট বডিতে পার্স করার জন্য
// নতুন ইউজার তৈরি
app.post('/user', async (req, res) => {
try {
const { firstName, lastName, email } = req.body;
const user = await User.create({ firstName, lastName, email });
res.status(201).json(user); // 201 স্ট্যাটাস কোড সহ নতুন ইউজার রিটার্ন
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// সমস্ত ইউজার দেখানো
app.get('/users', async (req, res) => {
try {
const users = await User.findAll();
res.status(200).json(users); // 200 স্ট্যাটাস কোড সহ সকল ইউজার রিটার্ন
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// নির্দিষ্ট ইউজার দেখানো
app.get('/user/:id', async (req, res) => {
try {
const user = await User.findByPk(req.params.id);
if (user) {
res.status(200).json(user); // 200 স্ট্যাটাস কোড সহ নির্দিষ্ট ইউজার রিটার্ন
} else {
res.status(404).json({ error: 'User not found' });
}
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// ইউজার আপডেট করা
app.put('/user/:id', async (req, res) => {
try {
const user = await User.findByPk(req.params.id);
if (user) {
user.firstName = req.body.firstName || user.firstName;
user.lastName = req.body.lastName || user.lastName;
user.email = req.body.email || user.email;
await user.save();
res.status(200).json(user); // 200 স্ট্যাটাস কোড সহ আপডেট হওয়া ইউজার রিটার্ন
} else {
res.status(404).json({ error: 'User not found' });
}
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// ইউজার ডিলিট করা
app.delete('/user/:id', async (req, res) => {
try {
const user = await User.findByPk(req.params.id);
if (user) {
await user.destroy();
res.status(200).json({ message: 'User deleted successfully' });
} else {
res.status(404).json({ error: 'User not found' });
}
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// সার্ভার চালু করা
app.listen(port, () => {
console.log(`Server is running on http://localhost:${port}`);
});
এখানে আমরা ExpressJS-এ বিভিন্ন রাউট তৈরি করেছি:
POST /user– নতুন ইউজার তৈরিGET /users– সমস্ত ইউজার দেখানোGET /user/:id– নির্দিষ্ট ইউজার দেখানোPUT /user/:id– ইউজার আপডেট করাDELETE /user/:id– ইউজার মুছে ফেলা
সারাংশ
ExpressJS এবং Sequelize ORM ব্যবহার করে MySQL বা PostgreSQL ডাটাবেসের সঙ্গে ইন্টিগ্রেশন করা অনেক সহজ। Sequelize ডাটাবেসের সাথে যোগাযোগের জন্য প্র
োগ্রামিং ভাষায় ব্যবহৃত SQL কোডের পরিবর্তে আপনাকে JavaScript কোড ব্যবহার করে ডেটা ম্যানিপুলেট করতে সহায়তা করে। আপনি এই টিউটোরিয়ালে ডেটাবেসের জন্য রাউট তৈরি করে CRUD অপারেশনগুলো এক্সপ্রেস অ্যাপ্লিকেশন থেকে পরিচালনা করতে শিখেছেন।
Read more