آموزش توسعه backend با FeathersJS و MongoDB

تاریخ: 1404/7/17 ساعت: 5:33 بازدید: 31

آموزش توسعه Backend با FeathersJS و MongoDB: راهنمای جامع و کاربردی

آموزش جامع توسعه Backend با FeathersJS و MongoDB

در دنیای توسعه وب مدرن، ساخت یک backend قدرتمند و مقیاس پذیر برای برنامه های شما امری حیاتی است. FeathersJS یک فریم ورک سبک و منعطف برای ساخت APIهای RESTful و Realtime است. MongoDB نیز یک پایگاه داده NoSQL قدرتمند است که برای ذخیره داده های غیرساخت یافته بسیار مناسب است. در این آموزش، نحوه استفاده از این دو فناوری را برای ساخت یک backend کارآمد بررسی خواهیم کرد.

پیش نیازها

  • Node.js و npm (یا yarn) نصب شده باشند.
  • MongoDB نصب و راه اندازی شده باشد.
  • آشنایی اولیه با JavaScript و ES6.

مراحل راه اندازی پروژه

1. ایجاد یک پروژه جدید FeathersJS

برای شروع، یک پروژه جدید FeathersJS ایجاد کنید. می توانید از Feathers CLI استفاده کنید که فرآیند ایجاد پروژه را بسیار ساده می کند.

npm install -g @feathersjs/cli
feathers generate my-app

دستور feathers generate my-app یک پروژه جدید با نام my-app ایجاد می کند. CLI از شما سوالاتی در مورد پیکربندی پروژه می پرسد. می توانید تنظیمات پیش فرض را انتخاب کنید یا تنظیمات سفارشی خود را وارد کنید.

2. نصب وابستگی های لازم

پس از ایجاد پروژه، باید وابستگی های لازم را نصب کنید. برای این آموزش، به @feathersjs/mongodb نیاز داریم که آداپتور MongoDB برای FeathersJS است.

cd my-app
npm install @feathersjs/mongodb mongodb

3. پیکربندی MongoDB

در فایل config/default.json (یا config/production.json برای محیط production) اطلاعات مربوط به اتصال به MongoDB را وارد کنید.

{
  "mongodb": "mongodb://localhost:27017/my-app"
}

مطمئن شوید که MongoDB در حال اجرا است و آدرس اتصال به درستی پیکربندی شده است.

ایجاد یک سرویس

1. استفاده از Feathers CLI برای تولید سرویس

ساده ترین راه برای ایجاد یک سرویس، استفاده از Feathers CLI است. با استفاده از این ابزار، می توانید سرویس ها را به صورت خودکار تولید کنید.

feathers generate service

CLI از شما سوالاتی در مورد نوع سرویس، نام سرویس و آداپتور پایگاه داده می پرسد. برای مثال، می توانید یک سرویس با نام messages ایجاد کنید که از MongoDB به عنوان پایگاه داده استفاده می کند.

2. بررسی کد تولید شده

پس از اجرای دستور feathers generate service، فایل های مربوط به سرویس در دایرکتوری src/services ایجاد می شوند. این فایل ها شامل موارد زیر هستند:

  • messages.service.js: تعریف سرویس و متدهای آن.
  • messages.class.js: کلاس سرویس که منطق اصلی سرویس را پیاده سازی می کند.
  • messages.hooks.js: تعریف هوک هایی که قبل و بعد از اجرای متدهای سرویس اجرا می شوند.

3. ثبت سرویس در برنامه

برای اینکه سرویس شما در دسترس باشد، باید آن را در فایل src/app.js ثبت کنید.

const messages = require('./services/messages/messages.service.js');

module.exports = function (app) {
  app.configure(messages);
};

پیاده سازی قابلیت ها

1. ایجاد (Create)

برای ایجاد یک رکورد جدید در پایگاه داده، از متد create استفاده کنید.

// در فایل messages.class.js
async create(data, params) {
  const { text } = data;

  if (!text) {
    throw new Error('Text must be provided');
  }

  const message = {
    text,
    createdAt: new Date()
  };

  return super.create(message, params);
}

2. خواندن (Read)

برای خواندن یک رکورد خاص از پایگاه داده، از متد get استفاده کنید. برای خواندن تمام رکوردها، از متد find استفاده کنید.

// در فایل messages.class.js
async get(id, params) {
  return super.get(id, params);
}

async find(params) {
  return super.find(params);
}

3. به روزرسانی (Update)

برای به روزرسانی یک رکورد موجود در پایگاه داده، از متد update یا patch استفاده کنید. متد update تمام فیلدهای رکورد را جایگزین می کند، در حالی که متد patch فقط فیلدهای مشخص شده را به روزرسانی می کند.

// در فایل messages.class.js
async update(id, data, params) {
  return super.update(id, data, params);
}

async patch(id, data, params) {
  return super.patch(id, data, params);
}

4. حذف (Delete)

برای حذف یک رکورد از پایگاه داده، از متد remove استفاده کنید.

// در فایل messages.class.js
async remove(id, params) {
  return super.remove(id, params);
}

هوک ها (Hooks)

هوک ها توابعی هستند که قبل و بعد از اجرای متدهای سرویس اجرا می شوند. می توانید از هوک ها برای اعتبارسنجی داده ها، احراز هویت، ثبت وقایع و انجام کارهای دیگر استفاده کنید.

1. تعریف هوک ها

هوک ها در فایل messages.hooks.js تعریف می شوند.

module.exports = {
  before: {
    create: [
      async context => {
        context.data.createdAt = new Date();
        return context;
      }
    ]
  }
};

در این مثال، یک هوک before برای متد create تعریف شده است. این هوک قبل از ایجاد یک رکورد جدید، فیلد createdAt را به داده ها اضافه می کند.

احراز هویت (Authentication)

FeathersJS دارای پشتیبانی داخلی برای احراز هویت است. می توانید از روش های مختلف احراز هویت مانند JWT، OAuth و Local Authentication استفاده کنید.

1. نصب وابستگی های احراز هویت

برای استفاده از احراز هویت، باید وابستگی های لازم را نصب کنید.

npm install @feathersjs/authentication @feathersjs/authentication-jwt @feathersjs/authentication-local

2. پیکربندی احراز هویت

احراز هویت در فایل src/app.js پیکربندی می شود.

const authentication = require('@feathersjs/authentication');
const jwt = require('@feathersjs/authentication-jwt');
const local = require('@feathersjs/authentication-local');

module.exports = function (app) {
  app.configure(authentication({ secret: 'YOUR_SECRET' }));
  app.configure(jwt());
  app.configure(local());

  app.service('authentication').hooks({
    before: {
      create: [
        local.hooks.authenticate(['local'])
      ],
      remove: [
        hook => hook.params.jwt = false
      ]
    }
  });
};

سوالات متداول (FAQ)

FeathersJS چیست؟

FeathersJS یک فریم ورک سبک و منعطف برای ساخت APIهای RESTful و Realtime با استفاده از Node.js است.

MongoDB چیست؟

MongoDB یک پایگاه داده NoSQL سندگرا است که برای ذخیره داده های غیرساخت یافته بسیار مناسب است.

چگونه می توانم یک سرویس جدید در FeathersJS ایجاد کنم؟

می توانید از Feathers CLI برای تولید یک سرویس جدید استفاده کنید: feathers generate service.

چگونه می توانم احراز هویت را در FeathersJS پیاده سازی کنم؟

FeathersJS دارای پشتیبانی داخلی برای احراز هویت است. می توانید از روش های مختلف احراز هویت مانند JWT، OAuth و Local Authentication استفاده کنید.

به دنبال توسعه یک backend قدرتمند و مقیاس پذیر برای پروژه خود هستید؟

تیم متخصص ما با تجربه در FeathersJS و MongoDB، آماده ارائه بهترین راهکارها برای نیازهای شماست!

درخواست مشاوره رایگان

برای اطلاعات بیشتر و مشاوره با ما تماس بگیرید:

09190994063 - 09376846692

ما منتظر تماس شما هستیم!

نظرات کاربران