sequelize 在 Nestjs 中的 env 配置

Posted by CodingWithAlice on February 20, 2025

sequelize 在 Nestjs 中的 env 配置

总结:

  • 使用 cross-env 在指令中传入 环境变量NODE_ENV
  • 使用 @nestjs/config 在 app.module.ts 中 获取到配置,查询配置 进行不同环境数据库的连接

1、安装依赖,传入、获取配置

npm i @nestjs/config
⭐️ // envFilePath 读取不同配置的文件 + configService 获取配置
npm i cross-env
⭐️ // process.env.NODE_ENV

2、传入配置 package.json

"script": {
    "start:dev": "cross-env NODE_ENV=development nest start --watch",
    "start:prod": "cross-env NODE_ENV=production node dist/main"
}

3、获取配置 在 app.module.ts 中

import { ConfigModule, ConfigService } from '@nestjs/config';
@Module({
    imports: [
        ConfigModule.forRoot({
            envFilePath: `.env.${process.env.NODE_ENV || 'development'}`,
            isGlobal: true, // 使 ConfigModule 在整个应用中可用
        }),
        SequelizeModule.forRootAsync({ // 使用异步方式配置 Sequelize
            imports: [ConfigModule],
            useFactory: (configService: ConfigService) => ({
                dialect: 'mysql',
                host: configService.get<string>('DB_HOST'),
                port: 3306,
                username: 'root',
                password: configService.get<string>('DB_PASSWORD'),
                database: 'Daily',
                models: [Ltn, Routine, Time],
            }),
            inject: [ConfigService],
        }),
        LtnsModule,
        RoutinesModule,
        TimesModule,
    ],
})
export class AppModule {}