provide/inject/module/export的使用
- 生成模块
nest g res list
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { DemoController } from './demo/demo.controller';
import { DemoModule } from './demo/demo.module';
import { UserModule } from './user/user.module';
import {AppService2} from './app.service2'
import { ListModule } from './list/list.module';
import {ConfigModule} from "./config/config.module";
@Module({
imports: [DemoModule, UserModule, ListModule,
ConfigModule.forRoot({path:'/xiaoman'})],
controllers: [AppController, DemoController],
providers: [
AppService2,
{
provide:"abc",
useClass:AppService
},
{
provide:'test',
useValue:['aa','bb','cc']
},
{
provide:"ccc",
inject:[AppService2],
useFactory(Appservice2:AppService2){
return Appservice2.getHello();
}
}
],
})
export class AppModule {}
import { Module } from '@nestjs/common';
import { UserService } from './user.service';
import { UserController } from './user.controller';
@Module({
controllers: [UserController],
providers: [UserService],
exports:[UserService]//暴露模块
})
export class UserModule {}
import {Controller, Get, Post, Body, Patch, Param, Delete, Inject} from '@nestjs/common';
import { ListService } from './list.service';
import { CreateListDto } from './dto/create-list.dto';
import { UpdateListDto } from './dto/update-list.dto';
import {UserService} from '../user/user.service'
@Controller('list')
export class ListController {
constructor(
private readonly listService: ListService,
private readonly userService:UserService,
@Inject('test') private readonly test: string[],
@Inject('Config') private readonly base:any) {
}
@Get()
getHello(){
return this.userService.findAll()
}
}
import {DynamicModule, Global, Module} from "@nestjs/common";
import * as module from "module";
interface Options{
path:string
}
@Global()
@Module({
})
export class ConfigModule{
static forRoot (options:Options):DynamicModule{
return {
module:ConfigModule,
providers:[
{
provide:"Config",
useValue:{baseUrl:"/api"+options.path}
}
],
exports:[
{
provide:"Config",
useValue:{baseUrl:"/api"+options.path }
}
]
}
}
}