Provider & Service trong NestJS
Bài 5 – Provider và Service trong kiến trúc NestJS
Bài 5 / 8
Provider & Service trong NestJS
Provider là thành phần cốt lõi của NestJS, dùng để xử lý nghiệp vụ và được quản lý thông qua Dependency Injection. Service là dạng provider phổ biến nhất, chứa toàn bộ logic của ứng dụng.
1. Nội dung chính
- Provider là gì và cách hoạt động trong NestJS.
- Service – nơi chứa business logic.
- Dependency Injection (DI) trong NestJS.
- Inject service vào controller.
- Cách tổ chức service theo từng module.
2. Ví dụ
// Tạo service
// nest g service users
import { Injectable } from '@nestjs/common';
@Injectable()
export class UsersService {
private users = ['User A', 'User B'];
findAll() {
return this.users;
}
findOne(id: number) {
return this.users[id];
}
}
// Inject service vào controller
import { Controller, Get, Param } from '@nestjs/common';
import { UsersService } from './users.service';
@Controller('users')
export class UsersController {
constructor(private readonly usersService: UsersService) {}
@Get()
findAll() {
return this.usersService.findAll();
}
@Get(':id')
findOne(@Param('id') id: string) {
return this.usersService.findOne(Number(id));
}
}
3. Kiến thức trọng tâm
Service đảm nhận toàn bộ logic nghiệp vụ, giúp controller nhẹ và dễ bảo trì.
Provider được quản lý bởi DI container của NestJS, giúp tái sử dụng và kiểm soát phụ thuộc hiệu quả.
Sử dụng @Injectable() để đánh dấu một provider.
4. Bài tập nhanh
Tạo service products với các hàm: findAll, findOne, create.
Inject ProductsService vào controller và thử trả về dữ liệu mẫu.
Tách logic CRUD cơ bản vào service thay vì viết trong controller.
5. Kết luận
Provider và Service là nền tảng quan trọng để tổ chức logic nghiệp vụ. Khi sử dụng đúng cách, hệ thống trở nên rõ ràng, dễ mở rộng và tuân thủ chuẩn kiến trúc của NestJS.