web-dev-qa-db-fra.com

Nestjs - Comment utiliser des variables .env dans le fichier de module d'application principal pour la connexion de la base de données

Je travaille sur ma première application Nestjs, qui fonctionnait bien avec la base de données codée à la base de la bande de connexion en app.module.ts.

Mais ensuite selon nos exigences, je devais choisir les valeurs de configuration de la base de données à partir de fichiers d'environnement. Pour cela, j'ai suivi la documentation de configuration sur le site Web de la documentation Nestjs https://docs.nestjs.com/techniques/configuration

Mais le problème est que je dois utiliser les variables .env dans le même fichier pour la connexion de base de données, ce qui échoue.

Voici mon code d'origine qui fonctionnait bien:

@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],
})

Maintenant, je voulais choisir ces valeurs de base de données de fichiers .env, qui sont comme local.env, dev.env etc. En fonction de l'environnement. Maintenant, mon code ne fonctionne pas:

@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],
})
7
Mohit Bhardwaj

En utilisant le package Nestjs/Config:

nPM Installez @ Nestjs/Config

Après avoir installé le package, dans le module d'application (fichier app.module.ts):

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';

@Module({
  imports: [ConfigModule.forRoot()],
})

export class AppModule {}

Après que les fichiers .env peuvent être accessibles dans toute l'application. Supposons que votre fichier .env ressemble à ceci.

DB_USER=mohit

pour accéder à db_user variable utilisation process.env.db_user

1
Raiyad Raad