第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

NestJS - 如何在主應(yīng)用程序模塊文件中使用 .env 變量進行數(shù)據(jù)庫連接

NestJS - 如何在主應(yīng)用程序模塊文件中使用 .env 變量進行數(shù)據(jù)庫連接

青春有我 2022-12-22 15:25:23
我正在開發(fā)我的第一個 NestJS 應(yīng)用程序,它在app.module.ts.但后來根據(jù)我們的要求,我不得不從環(huán)境文件中選擇數(shù)據(jù)庫配置值。為此,我遵循了 nestjs 文檔網(wǎng)站上的配置文檔 - https://docs.nestjs.com/techniques/configuration但問題是我需要在同一個文件中使用 .env 變量進行數(shù)據(jù)庫連接,這是失敗的。這是我工作正常的原始代碼:@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],})現(xiàn)在,我想根據(jù)環(huán)境從 .env 文件中選擇那些數(shù)據(jù)庫值,例如local.env等等。dev.env現(xiàn)在,我的這段代碼不起作用:@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],})
查看完整描述

5 回答

?
叮當(dāng)貓咪

TA貢獻1776條經(jīng)驗 獲得超12個贊

從這里的 Nestjs 文檔 - https://docs.nestjs.com/techniques/configuration

這些步驟對我適用于 MySQL 和 TypeORM。

  1. 安裝 Nestjs 配置模塊 - npm i --save @nestjs/config. 它依賴于dotenv

  2. .env在您的根文件夾中創(chuàng)建一個文件并添加您的鍵/值對,例如DATABASE_USER=myusername

  3. 打開 app.module.ts 并導(dǎo)入配置模塊

    import { ConfigModule } from '@nestjs/config';
  1. 將以下行添加到 的導(dǎo)入部分app.module.ts。我將它添加為第一次導(dǎo)入。它會自動加載 .env 文件的內(nèi)容。

    ConfigModule.forRoot(),
  1. 然后,您可以按照數(shù)據(jù)庫配置部分中的常規(guī) process.env.<variable_name> 開始使用環(huán)境變量,例如

    process.env.DATABASE_USER

有關(guān) ConfigModule 的更多配置,請參見上面的鏈接。您可以使用自定義文件/路徑并將模塊設(shè)置為全局可見。


查看完整回答
反對 回復(fù) 2022-12-22
?
浮云間

TA貢獻1829條經(jīng)驗 獲得超4個贊

1.繼續(xù)使用ConfigModule


您需要NODE_ENV在 npm scripts 中設(shè)置,以便它可以用于根據(jù) env 加載 env 文件。


"scripts": {

  "start:local": "NODE_ENV=local npm run start"

  "start:dev": "NODE_ENV=dev npm run start"

}

現(xiàn)在你可以使用ConfigModule:


@Module({

  imports: [

    ConfigModule.forRoot({ envFilePath: `${process.env.NODE_ENV}.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' })

    ...

})

2.使用dotenv


npm install dotenv

向您添加一些腳本以package.json設(shè)置您所在的環(huán)境。


"scripts": {

  ...

  "start:local": "NODE_ENV=local npm run start"

  "start:dev": "NODE_ENV=dev npm run start"

}

dotenv在main.ts文件中導(dǎo)入。確保在文件頂部執(zhí)行此操作。


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

3.使用env-cmd


你可以使用env-cmdnpm 包。


npm install env-cmd

并在 中添加一些針對不同環(huán)境的命令package.json,例如:


"scripts": {

  ...

  "start:local": "env-cmd -f local.env npm run start"

  "start:dev": "env-cmd -f dev.env npm run start"

}

...

現(xiàn)在您可以使用環(huán)境變量,例如:


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


更新:


為了克服不同平臺的 env set 命令問題,您可以安裝cross-envpackage.


npm install -D cross-env

并更新腳本:


"scripts": {

  "start:local": "cross-env NODE_ENV=local npm run start"

  "start:dev": "cross-env NODE_ENV=dev npm run start"

}


查看完整回答
反對 回復(fù) 2022-12-22
?
江戶川亂折騰

TA貢獻1851條經(jīng)驗 獲得超5個贊

MongooseModule.forRootAsync({

  imports: [ConfigModule],

  useFactory: async (configService: ConfigService) => ({

    uri: configService.get<string>('MONGODB_URI'),

  }),

  inject: [ConfigService],

});


查看完整回答
反對 回復(fù) 2022-12-22
?
拉莫斯之舞

TA貢獻1820條經(jīng)驗 獲得超10個贊

通過使用 nestjs/config 包:


npm 安裝@nestjs/config


安裝包后,在 app 模塊(app.module.ts 文件)中:


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

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


@Module({

  imports: [ConfigModule.forRoot()],

})


export class AppModule {}

之后,可以在整個應(yīng)用程序中訪問 .env 文件。假設(shè)您的 .env 文件如下所示。


DB_USER=mohit

訪問 DB_USER 變量使用 process.env.DB_USER


查看完整回答
反對 回復(fù) 2022-12-22
?
波斯汪

TA貢獻1811條經(jīng)驗 獲得超4個贊

您需要使用MongooseModule.forRootAsync(() => {...})而不是MongooseModule.forRoot(...)

這使得 MongooseModule 等待其 IOC 依賴項。

請參閱:https ://docs.nestjs.com/techniques/mongodb#async-configuration


查看完整回答
反對 回復(fù) 2022-12-22
  • 5 回答
  • 0 關(guān)注
  • 252 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號