برنامه نویسی

شروع کار با NestJS و TypeORM: راهنمای مبتدیان

سلام هر کس! 👋 اگر به دنبال ساخت برنامه‌های سمت سرور مقیاس‌پذیر و قابل نگهداری با Node.js هستید، NestJS یک چارچوب فوق‌العاده برای فرو رفتن در آن است. در ترکیب با TypeORM برای تعامل با پایگاه داده، می توانید برنامه های کاربردی قوی و ایمن را به راحتی ایجاد کنید. در این راهنما، راه اندازی یک پروژه ساده NestJS با TypeORM را بررسی خواهیم کرد.

چرا NestJS و TypeORM؟

NestJS
NestJS یک فریم ورک پیشرو Node.js است که با TypeScript ساخته شده است که از ویژگی های قوی Angular برای ارائه یک ساختار قابل اعتماد برای ساخت برنامه های سمت سرور استفاده می کند. معماری ماژولار آن مدیریت و مقیاس بندی برنامه های بزرگ را آسان می کند.

TypeORM
TypeORM یک ORM (نقشه‌نویس شیء-رابطه‌ای) برای TypeScript و JavaScript (ES7، ES6، ES5) است. این پایگاه داده های زیادی را پشتیبانی می کند و به شما امکان می دهد با استفاده از سیستم تایپ قدرتمند TypeScript با پایگاه داده خود تعامل داشته باشید.

تنظیم محیط

پیش نیازها
قبل از شروع، مطمئن شوید که Node.js و npm را نصب کرده اید. می توانید آنها را از وب سایت رسمی Node.js دانلود کنید.

مرحله 1: یک پروژه NestJS جدید ایجاد کنید
ابتدا یک پروژه NestJS جدید با استفاده از Nest CLI ایجاد می کنیم. اگر Nest CLI را نصب نکرده‌اید، می‌توانید آن را به صورت سراسری نصب کنید:

npm install -g @nestjs/cli
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون یک پروژه جدید ایجاد کنید:

nest new my-nestjs-project
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 2: TypeORM و Dependencies را نصب کنید
در مرحله بعد، باید TypeORM و درایور پایگاه داده ای را که استفاده می کنیم نصب کنیم. برای این مثال، ما از SQLite استفاده خواهیم کرد زیرا ساده است و نیازی به تنظیمات ندارد.

npm install @nestjs/typeorm typeorm sqlite3
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 3: TypeORM را پیکربندی کنید
ما باید TypeORM را در پروژه NestJS خود پیکربندی کنیم. src/app.module.ts را باز کنید و آن را به‌روزرسانی کنید تا شامل پیکربندی TypeORM شود:

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'sqlite',
      database: 'database.sqlite',
      entities: [__dirname + '/**/*.entity{.ts,.js}'],
      synchronize: true,
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 4: یک موجودیت ایجاد کنید
موجودیت ها هسته TypeORM هستند. آنها جداول موجود در پایگاه داده شما را نشان می دهند. بیایید یک کاربر ساده ایجاد کنیم.

یک دایرکتوری جدید به نام entities در داخل دایرکتوری src ایجاد کنید و سپس یک فایل با نام user.entity.ts در دایرکتوری entities ایجاد کنید:

import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  email: string;
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 5: یک ماژول و سرویس کاربر ایجاد کنید
برای اینکه کد خود را مدولار نگه داریم، یک ماژول کاربر و یک سرویس مربوطه ایجاد خواهیم کرد تا منطق مربوط به کاربر خود را مدیریت کند.

یک ماژول و سرویس جدید ایجاد کنید:

nest generate module users
nest generate service users
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون، «src/users/users.module.ts» را به‌روزرسانی کنید تا TypeORM را برای موجودیت کاربر ما در بر گیرد:

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { UsersService } from './users.service';
import { User } from '../entities/user.entity';

@Module({
  imports: [TypeOrmModule.forFeature([User])],
  providers: [UsersService],
  exports: [UsersService],
})
export class UsersModule {}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 6: سرویس کاربران را پیاده سازی کنید
src/users/users.service.ts را باز کنید و عملیات اولیه CRUD را اجرا کنید:

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from '../entities/user.entity';

@Injectable()
export class UsersService {
  constructor(
    @InjectRepository(User)
    private usersRepository: Repository,
  ) {}

  findAll(): Promise {
    return this.usersRepository.find();
  }

  findOne(id: number): Promise {
    return this.usersRepository.findOneBy({ id });
  }

  create(user: User): Promise {
    return this.usersRepository.save(user);
  }

  async remove(id: number): Promise {
    await this.usersRepository.delete(id);
  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 7: یک Users Controller ایجاد کنید
یک کنترلر برای کاربران ایجاد کنید:

nest generate controller users
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

src/users/users.controller.ts را باز کنید و نقاط پایانی را تنظیم کنید:

import { Controller, Get, Post, Body, Param, Delete } from '@nestjs/common';
import { UsersService } from './users.service';
import { User } from '../entities/user.entity';

@Controller('users')
export class UsersController {
  constructor(private readonly usersService: UsersService) {}

  @Get()
  findAll(): Promise {
    return this.usersService.findAll();
  }

  @Get(':id')
  findOne(@Param('id') id: string): Promise {
    return this.usersService.findOne(+id);
  }

  @Post()
  create(@Body() user: User): Promise {
    return this.usersService.create(user);
  }

  @Delete(':id')
  remove(@Param('id') id: string): Promise {
    return this.usersService.remove(+id);
  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 8: ماژول کاربران را یکپارچه کنید
در نهایت، UsersModule را در AppModule خود ادغام کنید. src/app.module.ts را باز کنید و آن را به روز کنید:

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UsersModule } from './users/users.module';

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'sqlite',
      database: 'database.sqlite',
      entities: [__dirname + '/**/*.entity{.ts,.js}'],
      synchronize: true,
    }),
    UsersModule,
  ],
  controllers: [AppController],
  providers: [AppService],
})

export class AppModule {}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اجرای برنامه
اکنون که همه چیز تنظیم شده است، می توانید برنامه خود را اجرا کنید:

npm run start
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سرور NestJS شما باید در حال اجرا باشد و می توانید با API خود تعامل برقرار کنید. سعی کنید با استفاده از Postman یا هر سرویس گیرنده API دیگری، برخی از درخواست‌ها را به نقطه پایانی /users ارسال کنید تا عملیات CRUD خود را در عمل ببینید.

نتیجه
تبریک می گویم! 🎉 شما به تازگی یک برنامه اساسی NestJS را با TypeORM راه اندازی کرده اید و عملیات CRUD را برای یک موجودیت کاربر پیاده سازی کرده اید. از اینجا می‌توانید برنامه خود را با افزودن نهادها، سرویس‌ها و کنترل‌کننده‌های بیشتر در صورت نیاز گسترش دهید.

NestJS و TypeORM ترکیبی قدرتمند برای ساخت برنامه‌های مقیاس‌پذیر و قابل نگهداری فراهم می‌کنند. به کاوش در اسناد NestJS و TypeORM ادامه دهید تا پتانسیل کامل آنها را باز کنید.

کد نویسی مبارک! 🚀

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا