nest Providers

提供程序是Nest的基本概念。 许多基本的Nest类都可以被视为提供程序-服务,存储库,工厂,帮助程序等。 提供程序的主要思想是它可以注入依赖项。 这意味着对象可以彼此创建各种关系,并且“连接”对象实例的功能可以在很大程度上委派给Nest运行时系统。 提供者只是一个用@Injectable()装饰器注释的类。

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

也可以使用命令创建 service

nest g service cats

我们的CatsService是具有一个属性和两个方法的基本类。 唯一的新功能是它使用@Injectable()装饰器。 @Injectable()装饰器附加元数据,该元数据告诉Nest此类是Nest提供程序。 顺便说一下,该示例还使用了Cat接口,该接口可能看起来像这样:

export interface Cat {
  name: string;
  age: number;
  breed: string;
}

在 controller 中使用

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 {
  constructor(private catsService: CatsService) {}

  @Post()
  async create(@Body() createCatDto: CreateCatDto) {
    this.catsService.create(createCatDto);
  }

  @Get()
  async findAll(): Promise<Cat[]> {
    return this.catsService.findAll();
  }
}
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 {}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容