Note
服务
nestjs的服务介绍
发布于 更新于
Service
服务层,用于处理业务逻辑。如处理数据存储和检索。
@Injectable
服务类控制器,把元数据添加在类上,表明该类是一个可以由 NestIoC 容器管理的类,这个类可以被 NestJS 的依赖注入系统管理,那么在需要使用的地方可以依赖注入这个类(比如在控制层)
定义服务
cats.service.ts
import { Injectable } from "@nestjs/common";
import { Cat } from "./interfaces/cat.interface";
// @Injectable()装饰器告诉NestJS,CatsService可以被依赖注入
@Injectable()
export class CatsService {
private readonly cats: Cat[] = [];
create(cat: Cat) {
this.cats.push(cat);
}
findAll(): Cat[] {
return this.cats;
}
}
定义数据接口
cat.interface.ts
export interface Cat {
name: string;
age: number;
breed: string;
}
在 Controller 中使用 Service
cats.controller.ts
import { Controller, Get, Post, Body } from "@nestjs/common";
import { CreateCatDto } from "./dto/create-cat.dto";
import { CatsService } from "./cats.service";
import { Cat } from "./interfaces/cat.interface";
@Controller("cats")
export class CatsController {
// 构造函数:进行依赖注入,需要时使用的内容需要先在这里注入
// CatsService 通过类构造函数被注入。相当于:
// const catsService = new CatsService();
// const catsController = new CatsController(catsService);
// 后续就可以在CatsController中获取CatsService的内容
constructor(private catsService: CatsService) {}
@Post()
async create(@Body() createCatDto: CreateCatDto) {
this.catsService.create(createCatDto);
}
@Get()
async findAll(): Promise<Cat[]> {
return this.catsService.findAll();
}
}