nestjs学习day3

58 阅读1分钟

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