美文网首页
nest Providers

nest Providers

作者: baiqingchun | 来源:发表于2020-07-07 07:23 被阅读0次

    提供程序是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 {}
    

    相关文章

      网友评论

          本文标题:nest Providers

          本文链接:https://www.haomeiwen.com/subject/pltfqktx.html