基础使用
1 2 3 4 5 6 7 8 9 10 11 12 13
|
import { Injectable } from '@nestjs/common'; import { Cat } from './interfaces/cat.interface';
@Injectable() export class CatsService { private readonly cats: Cat[] = [];
findAll(): Cat[] { return this.cats; } }
|
1 2 3 4 5 6 7 8 9
|
@Module({ controllers: [CatController], providers: [CatService] }) export class AppModule { }
|
Value Provider
用于替换 class 的对象。可用于 mock。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import { CatsService } from './cats.service';
const mockCatsService = {
};
@Module({ imports: [CatsModule], providers: [ { provide: CatsService, useValue: mockCatsService, }, ], }) export class AppModule {}
|
Non-class-based provider tokens
用于传递参数和配置。
1 2 3 4 5 6 7 8 9 10 11
| import { connection } from './connection';
@Module({ providers: [ { provide: 'CONNECTION', useValue: connection, }, ], }) export class AppModule {}
|
使用方式:
1 2 3 4
| @Injectable() export class CatsRepository { constructor(@Inject('CONNECTION') connection: Connection) {} }
|
Class providers
用于通过参数的方式来传递类。
1 2 3 4 5 6 7 8 9 10 11 12
| const configServiceProvider = { provide: ConfigService, useClass: process.env.NODE_ENV === 'development' ? DevelopmentConfigService : ProductionConfigService, };
@Module({ providers: [configServiceProvider], }) export class AppModule {}
|