12、使用全局统一Config配置

98 阅读1分钟

1、安装依赖,

  1. 安装依赖包,使用命令 npm i @nestjs/config,

  2. 在根目录创建.env文件和.env.template文件

    APP_ENV=development APP_P0RT=3000 DB_URL=mongodb://mongo:27017 DB_NAME=nest-server DB_USER=XXXX DB_PASS=123456 DB_ENTITY_NAME=mongo DB_SYNCHRONIZE=false DB_LOGGING=true

  3. 在shared文件夹中,创建configs文件夹,在里面创建configration文件读取env的函数

    export default () => ({ env: process.env.APP_ENV, port: process.env.APP_P0RT })

  4. 同级目录下创建module-options.ts 然后把它模块化

    import { ConfigModuleOptions } from '@nestjs/config' import configration from './configration'

    export const configModuleOptions: ConfigModuleOptions = { envFilePath: '.env', load: [configration] }

  5. 然后在shared模块中进行注入,然后在将其导出,可以在全部模块中使用

    import { Module } from "@nestjs/common"; import { SystemService } from "./system.service"; import { ConfigModule } from "@nestjs/config"; import { configModuleOptions } from "./configs/module-options";

    @Module({ exports: [SystemService,ConfigModule], providers: [SystemService], imports: [ ConfigModule.forRoot(configModuleOptions) ] }) export class ShareModule {}

  6. 然后在users.controller中使用env,

    import { Controller, Get, Post, Body, Patch, Param, Delete, HttpStatus } from '@nestjs/common'; import { ConfigService } from '@nestjs/config' import { UsersService } from './users.service'; import { CreateUserDto } from './dto/create-user.dto'; import { UpdateUserDto } from './dto/update-user.dto'; import { ApiTags,ApiOperation,ApiBearerAuth, ApiResponse} from '@nestjs/swagger' import { SystemService } from 'src/shared/system.service';

    @Controller('users') @ApiTags('用户管理') export class UsersController { constructor(private readonly usersService: UsersService,private readonly systemService: SystemService,private readonly configService: ConfigService) {}

    @Post() @ApiOperation({ summary: '新增用户', }) @ApiResponse({ status: HttpStatus.CREATED, type: CreateUserDto }) @ApiBearerAuth() create(@Body() createUserDto: CreateUserDto) { return this.usersService.create(createUserDto); }

    @Get() findAll() { console.log('configService controller',this.configService.get('env')); return this.usersService.findAll(); }

    @Get(':id') findOne(@Param('id') id: string) { return this.usersService.findOne(+id); }

    @Patch(':id') update(@Param('id') id: string, @Body() updateUserDto: UpdateUserDto) { return this.usersService.update(+id, updateUserDto); }

    @Delete(':id') remove(@Param('id') id: string) { return this.usersService.remove(+id); } }