返回文章列表 →

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();
  }
}