一、介绍
提供器是 Nest 中的一个基本概念。
许多基本的 Nest 类可以被视为提供器,例如: 服务、存储库、工厂、助手等等。
提供器的主要思想是它可以作为依赖注入;这意味着对象之间可以创建各种关系,并且 "接线" 这些对象的功能很大程度上可以委托给 Nest 运行时系统
我们可以把复杂处理逻辑交给提供器对应方法处理
我们之前在controller中直接返回了字符串,现在我们把它交给提供器处理;
先新建一个提供器cats.service.ts
import { Injectable } from '@nestjs/common';
import { Cat } from './interfaces/cat.interface';@Injectable()
export class CatsService {private readonly cats: Cat[] = [];create(cat: Cat) {this.cats.push(cat);}findAll(): Cat[] {return this.cats;}
}
说明:
@Injectable是装饰器,说明修饰的类可以被nestjsIOC
管理
Cat是自定义的一个ts
接口
export interface Cat {name: string;age: number;breed: string;
}
创建好提供器后,我们需要在controller中引入
@Controller('cats')
export class CatsController {constructor(private catsService: CatsService) {} //这里引入提供器@Get()findAll(): Cat[] {return this.catsService.findAll();}
}
引入之后就可以用了吗?不是的,还需要在app.module.ts中注册provider
import { Module } from '@nestjs/common';
import { CatsController } from './cats/cats.controller';
import { CatsService } from './cats/cats.service';@Module({controllers: [CatsController], //注册控制器providers: [CatsService], //注册提供器
})
export class AppModule {}