NestJS-如何在主应用程序模块文件中使用.env变量进行数据库连接

Mohit Bhardwaj

我正在开发我的第一个NestJS应用程序,该应用程序与中的硬编码数据库连接字符串可以正常工作app.module.ts

但是然后根据我们的要求,我不得不从环境文件中选择数据库配置值。对于这一点,我也跟着nestjs文档网站上的配置文档- https://docs.nestjs.com/techniques/configuration

但是问题是我需要在同一文件中使用.env变量进行数据库连接,但失败了。

这是我正常工作的原始代码:

@Module({
  imports: [
    MongooseModule.forRoot(`mongodb+srv://myusername:[email protected]?retryWrites=true&w=majority&db=dbname`, { useNewUrlParser: true, dbName: 'dbname' }),
    ProductModule,
    CategoryModule,
  ],
  controllers: [
    AppController,
    HealthCheckController,
  ],
  providers: [AppService, CustomLogger],
})

现在,我想根据环境从.env文件中选择那些DB值,例如local.envdev.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],
})
ash

1.使用 dotenv

npm install dotenv

向您的脚本中添加一些脚本,package.json以设置您所处的环境。

"scripts": {
  ...
  "start:local": "NODE_ENV=local npm run start"
  "start:dev": "NODE_ENV=dev npm run start"
}

导入dotenvmain.ts文件。确保在文件顶部执行此操作。

require('dotenv').config({ path: `../${process.env.NODE_ENV}.env` });

2.使用 env-cmd

您可以使用env-cmdnpm软件包。

npm install env-cmd

并在中为不同的环境添加一些命令package.json,例如:

"scripts": {
  ...
  "start:local": "env-cmd -f local.env npm run start"
  "start:dev": "env-cmd -f dev.env npm run start"
}
...

现在,您可以使用env变量,例如:

MongooseModule.forRoot(`mongodb+srv://${process.env.DB_USER}:${process.env.DB_PASS}@myhost.net?retryWrites=true&w=majority&db=dbname`, { useNewUrlParser: true, dbName: 'dbname' })

process.env.MONGO_CONNECTION_STRING

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在nestjs中动态连接到数据库?

NestJS .env 未连接到 Docker 容器数据库

如何在不使用 ORM 的情况下将 Nestjs 应用程序连接到 postgreSQL?

将NestJS与TypeOrm结合使用以在MySQL数据库中进行连接时出现问题

如何在NestJS应用程序中使用矩

nestjs-如何在nestjs应用程序之间使用共享模块

在Spring Boot Web应用程序中使用加密密码进行数据库连接

NestJS .env文件未生成

使用NestJs从数据库获取隐藏字段

在Android Studio和Gradle中的Android应用程序模块中使用库模块的不同构建类型

如何使用Meteor Up(mup)中的MONGO_URL env变量使流星应用程序连接到数据库?

使用环境变量的NestJS

如何在单独的类中使用 nestjs 环境变量

如何清理NestJs中的数据?

如何在不连接数据库的情况下在 nestjs 和 typeorm 中编写单元测试

如何使NestJS文件读取.env值

使用环境文件进行NestJs TypeORM配置

如何使用docker容器名称而不是IP通过knex进行数据库连接

在PHP中使用$ _request变量进行数据库更新

为什么Xamarin文档建议使用单例进行数据库连接?

使用php类和方法进行数据库连接

如何在Nestjs中创建mongodb连接提供程序

无法连接到数据库Heroku nestjs猫鼬

NestJS/TypeORM - 连接到多个数据库 - ConnectionNotFoundError

NestJS [TypeOrmModule] 无法连接数据库

NestJs:无法读取模块文件中的env变量,但能够读取服务文件中的env变量?

NestJs:如何在实体侦听器中访问数据库?

无法使用 nestjs/mongoose 连接 mongoDB

如何从Mono存储库构建NestJs API