作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发我的第一个 NestJS 应用程序,该应用程序在 app.module.ts
中的硬编码数据库连接字符串上运行良好.
但是根据我们的要求,我不得不从环境文件中选择数据库配置值。为此,我遵循了 nestjs 文档网站上的配置文档 - https://docs.nestjs.com/techniques/configuration
但问题是我需要在同一个文件中使用 .env 变量进行数据库连接,这是失败的。
这是我工作正常的原始代码:
@Module({
imports: [
MongooseModule.forRoot(`mongodb+srv://myusername:mypassword@myhost.net?retryWrites=true&w=majority&db=dbname`, { useNewUrlParser: true, dbName: 'dbname' }),
ProductModule,
CategoryModule,
],
controllers: [
AppController,
HealthCheckController,
],
providers: [AppService, CustomLogger],
})
现在,我想从 .env 文件中选择那些类似于
local.env
的 DB 值。 ,
dev.env
等取决于环境。现在,我的这段代码不起作用:
@Module({
imports: [
ConfigModule.forRoot({ envFilePath: `${process.env.NODE_ENV}.env` }),
MongooseModule.forRoot(`mongodb+srv://${ConfigModule.get('DB_USER')}:${ConfigModule.get('DB_PASS')}@myhost.net?retryWrites=true&w=majority&db=dbname`, { useNewUrlParser: true, dbName: 'dbname' }),
ProductModule,
CategoryModule,
],
controllers: [
AppController,
HealthCheckController,
],
providers: [AppService, CustomLogger],
})
最佳答案
从这里的 Nestjs 文档 - https://docs.nestjs.com/techniques/configuration
这些步骤适用于 MySQL 和 TypeORM。
npm i --save @nestjs/config
.它依赖于 dotenv.env
文件在您的根文件夹中并添加您的键/值对,例如DATABASE_USER=myusername
import { ConfigModule } from '@nestjs/config';
app.module.ts
的导入部分.我将它添加为第一个导入。它将自动加载 .env 文件的内容。 ConfigModule.forRoot(),
process.env.DATABASE_USER
有关 ConfigModule 的更多配置,请参见上面的链接。您可以使用自定义文件/路径并将模块设置为全局可见。
关于javascript - NestJS - 如何在主应用程序模块文件中使用 .env 变量进行数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63285055/
我有一个包含几个模块的程序,比如:moduleA、moduleB 和 moduleC。 而且我还有一个头文件 debug_flags.h 我在其中定义了三个宏: #define DEBUG_MODUL
我是一名优秀的程序员,十分优秀!