CRUD অপারেশন তৈরি করা (Create, Read, Update, Delete)

KoaJS এবং ডাটাবেস ইন্টিগ্রেশন - কোআজেএস (KoaJS) - Web Development

264

KoaJS একটি অত্যন্ত লঘু এবং কাস্টমাইজযোগ্য ওয়েব ফ্রেমওয়ার্ক যা Node.js পরিবেশে ব্যবহার করা হয়। KoaJS-এ CRUD (Create, Read, Update, Delete) অপারেশন তৈরি করার জন্য আপনি সাধারণ HTTP মেথড (GET, POST, PUT, DELETE) ব্যবহার করবেন। KoaJS-এ CRUD অপারেশন তৈরি করতে, আপনাকে কিছু মিডলওয়্যার এবং ডাটাবেস সংযোগ কনফিগার করতে হবে। এখানে আমরা একটি সাধারণ উদাহরণ দেখব যেখানে একটি users রিসোর্সের জন্য CRUD অপারেশন তৈরি করা হবে।

প্রয়োজনীয় প্যাকেজ ইনস্টল করা

প্রথমে কিছু প্যাকেজ ইনস্টল করতে হবে:

  1. koa - KoaJS ফ্রেমওয়ার্ক
  2. koa-router - রাউটিং ব্যবস্থাপনার জন্য
  3. koa-bodyparser - POST রিকোয়েস্টের বডি পার্স করার জন্য
  4. lowdb - একটি সহজ, JSON ভিত্তিক ডাটাবেস
npm install koa koa-router koa-bodyparser lowdb

১. KoaJS অ্যাপ্লিকেশন সেটআপ এবং CRUD অপারেশন তৈরি করা

এখানে একটি সাধারণ CRUD অপারেশন তৈরি করা হবে যেখানে users নামক একটি রিসোর্সে Create, Read, Update, এবং Delete অপারেশন করা হবে। lowdb ব্যবহার করে একটি লোকাল JSON ফাইলের মাধ্যমে ডেটা সংরক্ষণ করা হবে।

১.১. অ্যাপ্লিকেশন কোড (app.js)

const Koa = require('koa');
const Router = require('koa-router');
const bodyParser = require('koa-bodyparser');
const { Low, JSONFile } = require('lowdb');
const app = new Koa();
const router = new Router();

// Lowdb কনফিগারেশন
const db = new Low(new JSONFile('db.json'));
db.data = db.data || { users: [] };

// koa-bodyparser মিডলওয়্যার ব্যবহার
app.use(bodyParser());

// Create: নতুন ইউজার তৈরি
router.post('/users', async (ctx) => {
  const user = ctx.request.body;
  db.data.users.push(user);
  await db.write();
  ctx.status = 201;
  ctx.body = { message: 'User created successfully', user };
});

// Read: সমস্ত ইউজার দেখানো
router.get('/users', async (ctx) => {
  await db.read();
  ctx.body = db.data.users;
});

// Read: নির্দিষ্ট ইউজার দেখানো
router.get('/users/:id', async (ctx) => {
  const userId = ctx.params.id;
  await db.read();
  const user = db.data.users.find(u => u.id === userId);
  if (user) {
    ctx.body = user;
  } else {
    ctx.status = 404;
    ctx.body = { message: 'User not found' };
  }
});

// Update: ইউজার আপডেট করা
router.put('/users/:id', async (ctx) => {
  const userId = ctx.params.id;
  const updatedUser = ctx.request.body;
  await db.read();
  const index = db.data.users.findIndex(u => u.id === userId);
  if (index !== -1) {
    db.data.users[index] = { ...db.data.users[index], ...updatedUser };
    await db.write();
    ctx.body = { message: 'User updated successfully', user: db.data.users[index] };
  } else {
    ctx.status = 404;
    ctx.body = { message: 'User not found' };
  }
});

// Delete: ইউজার ডিলিট করা
router.delete('/users/:id', async (ctx) => {
  const userId = ctx.params.id;
  await db.read();
  const index = db.data.users.findIndex(u => u.id === userId);
  if (index !== -1) {
    db.data.users.splice(index, 1);
    await db.write();
    ctx.body = { message: 'User deleted successfully' };
  } else {
    ctx.status = 404;
    ctx.body = { message: 'User not found' };
  }
});

// রাউট মাউন্ট করা
app
  .use(router.routes())
  .use(router.allowedMethods());

// সার্ভার চালু করা
app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});

১.২. db.json ফাইল তৈরি করা

এখন একটি db.json ফাইল তৈরি করুন যেখানে ডেটা সংরক্ষিত হবে। এই ফাইলের মধ্যে প্রাথমিকভাবে একটি খালি users অ্যারে থাকবে:

{
  "users": []
}

২. CRUD অপারেশন ব্যাখ্যা

এখানে আমরা মোট ৫টি HTTP রাউট ব্যবহার করেছি যা আমাদের CRUD অপারেশনকে হ্যান্ডল করে।

২.১. Create (POST /users)

এই রুটের মাধ্যমে একটি নতুন ইউজার তৈরি করা হয়। আমরা ইউজারের ডেটা ctx.request.body থেকে গ্রহণ করি এবং lowdb ডাটাবেসে এটি সংরক্ষণ করি।

উদাহরণ রিকোয়েস্ট:

POST /users
{
  "id": "1",
  "name": "John Doe",
  "email": "john@example.com"
}

২.২. Read (GET /users)

এই রুটটি সমস্ত ইউজার দেখায়। এটি lowdb ডাটাবেস থেকে সমস্ত ইউজারগুলি পড়বে এবং ক্লায়েন্টে পাঠাবে।

উদাহরণ রিকোয়েস্ট:

GET /users

২.৩. Read (GET /users/:id)

এই রুটটি নির্দিষ্ট একটি ইউজার দেখানোর জন্য ব্যবহৃত হয়, যেখানে :id হল ইউজারের আইডি। lowdb থেকে ইউজারের ডেটা বের করে ক্লায়েন্টে পাঠানো হয়।

উদাহরণ রিকোয়েস্ট:

GET /users/1

২.৪. Update (PUT /users/:id)

এই রুটের মাধ্যমে ইউজারের তথ্য আপডেট করা যায়। ইউজারের ID দিয়ে তাকে খুঁজে বের করে আপডেট করা হয়।

উদাহরণ রিকোয়েস্ট:

PUT /users/1
{
  "name": "John Updated",
  "email": "john_updated@example.com"
}

২.৫. Delete (DELETE /users/:id)

এই রুটটি ইউজার ডিলিট করতে ব্যবহৃত হয়। ইউজারের ID দিয়ে তাকে খুঁজে বের করে ডিলিট করা হয়।

উদাহরণ রিকোয়েস্ট:

DELETE /users/1

৩. কনফিগারেশন এবং নিরাপত্তা সতর্কতা

  • ব্যবহারকারী ভ্যালিডেশন: ফর্ম ডেটা বা JSON থেকে গ্রহণ করা ডেটা সঠিক কিনা তা যাচাই করা গুরুত্বপূর্ণ। একে নিশ্চিত করতে আপনি সঠিক ভ্যালিডেশন লাইব্রেরি ব্যবহার করতে পারেন।
  • অথেন্টিকেশন এবং অথরাইজেশন: CRUD অপারেশনগুলো কেবল তখনই কার্যকর হতে পারে যখন ব্যবহারকারী অথেন্টিকেটেড থাকে। ব্যবহারকারী লগইন বা অথরাইজেশন চেক করার জন্য JWT (JSON Web Token) বা সেশন ব্যবহার করতে পারেন।
  • ব্যতিক্রম হ্যান্ডলিং: CRUD অপারেশনগুলোর সময় সঠিক ত্রুটি বার্তা প্রদান করা উচিত যাতে ডেভেলপার এবং ক্লায়েন্ট সমস্যাটি দ্রুত শনাক্ত করতে পারে।

সারাংশ

KoaJS-এ CRUD অপারেশন তৈরি করা খুবই সহজ এবং দ্রুত। আমরা এই উদাহরণে দেখেছি কিভাবে KoaJS-এ Create, Read, Update, এবং Delete অপারেশন তৈরি করা যায় koa-router এবং lowdb ব্যবহার করে। ফাইল এবং ডেটা ভ্যালিডেশন, নিরাপত্তা এবং অথেন্টিকেশন যুক্ত করলে এই অপারেশনগুলো আরও নিরাপদ এবং কার্যকরী হবে। KoaJS আপনাকে অত্যন্ত নমনীয়তা এবং কাস্টমাইজেশন দেয়, যার মাধ্যমে আপনি সহজেই আপনার প্রয়োজন অনুযায়ী CRUD অপারেশন তৈরি করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...