Skip to main content

Nestjs通用配置-基础配置

· 3 min read
Zhouxiaoxiao

开始

通常我们建立后台应用程序的时候,是需要提前配置一些工程参数,例如数据库地址\用户名密码,redis 地址\密码等等,本篇文章将介绍如何通过@nestjs/config进行参数配置。

提示

这里假定你已经建立一个 Nestjs 工程,如果没有请执行如下命令:

nest new config-demo

进入工程目录,执行命令,安装@nestjs/config:

pnpm add @nestjs/config

新增配置文件

安装完成后,我们在和package.json同级别的目录上新建.env文件

.env
DB_TYPE=MYSQL
DB_NAME=mydemo
DB_URL=http://localhost:3306
DB_USER=root
DB_PWD=root

配置导入

同时我们修改app.module.ts文件,引入ConfigModule,并将isGlobal设置为true,让ConfigModule可以全局使用。

app.module.ts
import { Module } from "@nestjs/common";
import { AppController } from "./app.controller";
import { AppService } from "./app.service";
import { ConfigModule } from "@nestjs/config";

@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}

接下来我们修改app.controller.ts,并在构造函数中引入ConfigService,我们新增一个 API,在 API 里面解析出.env里面的参数并将参数返回。

app.controller.ts
import { Controller, Get } from "@nestjs/common";
import { AppService } from "./app.service";
import { ConfigService } from "@nestjs/config";

@Controller()
export class AppController {
constructor(
private readonly appService: AppService,
private readonly configService: ConfigService
) {}

@Get("config")
getConfig(): any {
const config = {
dbType: this.configService.get("DB_TYPE"),
dbName: this.configService.get("DB_NAME"),
dbUrl: this.configService.get("DB_URL"),
dbUser: this.configService.get("DB_USER"),
dbPwd: this.configService.get("DB_PWD"),
};
return config;
}
}

启动应用程序,并请求 API 接口http://localhost:3000/config, 得到数据配置信息。至此@nestjs/config的基本使用介绍完毕。

{
"dbType": "MYSQL",
"dbName": "mydemo",
"dbUrl": "http://localhost:3306",
"dbUser": "root",
"dbPwd": "root"
}

总结

我们通过上述操作,完成了以下任务:

1、引入配置文件并读取配置文件。
2、新增接口config,返回所配置内容。

下一节我们将介绍 Nestjs 配置的进阶用法。