شروع کار با 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 ادامه دهید تا پتانسیل کامل آنها را باز کنید.
کد نویسی مبارک! 🚀