環境変数の設定の簡単な説明プログラムは、環境によって異なる環境変数を必要とします。たとえば、実稼働環境、テスト環境、開発環境では、リンク アドレス、リンク ポート番号、ログイン ユーザー名、パスワード関連情報など、異なるデータベース情報が必要です。この問題を解決するには、関連する操作を実行する必要があります。 Nest での最適なアプローチは、環境固有の .env ファイルをロードする ConfigService を公開する ConfigModule を作成することです。 Nest はすぐに使える @nestjs/config を提供します。 構成npm エコシステムには、最も単純なものを含め、関連する依存関係パッケージが多数あります。 糸を追加 dotenv-flow 糸を追加 @types/dotenv-flow -D インストール後、main.ts で直接使用します。 'dotenv-flow' から dotenv として * をインポートします /** * .env 環境をインポート * https://www.npmjs.com/package/dotenv-flow */ config() は、 対応する環境 .env 変数を使用することもできますが、公式に推奨されているパッケージ @nestjs/config を使用してください。 糸を追加 @nestjs/config app.module.ts の forRoot 静的メソッドで環境変数 .env 解析を構成します。 '@nestjs/common' から { モジュール } をインポートします。 '@nestjs/config' から ConfigModule をインポートします。 @モジュール({ インポート: [ConfigModule.forRoot()] }) クラス AppModule をエクスポートします {} 次に、プロジェクトのルート ディレクトリに新しい .env ファイルを作成します。 データベースユーザー= データベースパスワード= データベース名= データベースポート= データベースホスト= カスタム環境パス.env を本番環境、テスト環境、開発環境に合わせて調整する必要がある場合は、次のように構成できます。 ConfigModule.forRoot({ envFilePath: ['.env.development.local', '.env.development'], }) 先にソートされたものが最も優先度が高いですが、起動コマンドで環境変数を設定すると、最も優先度が高くなります。次に例を示します。 エクスポート DATABASE_USER=root && nest start カスタム構成ファイル複雑なプロジェクトの場合は、新しい src/config/configuration.ts を作成するなど、使用される構成可能な変数を収集する必要があります。 エクスポートデフォルト()=>({ ポート: parseInt(process.env.PORT, 10) || 3000, データベース: { ホスト: process.env.DATABASE_HOST || 'localhost', ポート: parseInt(process.env.DATABASE_PORT, 10) || 3306 } }) 次に、ConfigModule.forRoot にロードします。 './config/configuration' から設定をインポートします @モジュール({ 輸入: [ ConfigModule.forRoot({ ロード: [構成] }) ] }) クラス AppModule をエクスポートします {} 設定変数の読み取り関連する構成変数を読み取る必要がある場合は、ConfigService を使用し、使用する *.module.ts ファイルに導入する必要があります。 @モジュール({ インポート: [ConfigModule], // ... }) 関係する場所が多い場合、各モジュールをインポートするのは面倒です。上記の app.module.ts で行うことができます。 フィールドを追加します: './config/configuration' から設定をインポートします @モジュール({ 輸入: [ ConfigModule.forRoot({ isGlobal: true、 ロード: [構成] }) ] }) クラス AppModule をエクスポートします {} 次に、それをコンストラクターに挿入します。 '@nestjs/config' から ConfigService をインポートします。 コンストラクター(プライベートconfigService: ConfigService) {} 次のような構成変数を取得します。 const dbUser = this.configService.get<文字列>('DATABASE_USER') const dbHost = this.configService.get<文字列>('database.host') シリアル化シリアル化とは、プログラムがネットワーク応答でオブジェクトを返して送信する前のプロセスを指します。提供された情報は、クライアントに送信する前に変換およびクリーンアップする必要があります。たとえば、ユーザーを照会する場合、現在のユーザー エンティティ情報は通常返されますが、その中のパスワード情報はクライアントに送信できないため、ここで何らかの変換を行う必要があります。 幸いなことに、Nest は class-transformer と呼ばれる非常に便利なパッケージを提供しています。 yarn クラストランスフォーマーを追加 たとえば、次のユーザー エンティティ情報ではパスワード情報は除外されます。 'class-transformer' から { 除外 } をインポートします エクスポートクラスUserEntity { id: 番号 firstName: 文字列; lastName: 文字列; @除外() パスワード: 文字列; コンストラクター(部分: Partial<UserEntity>) { オブジェクトに部分的な代入を行う。 } } 次に、コントローラーでクエリ ユーザー メソッドを処理します。 @UseInterceptors(クラスシリアライザーインターセプター) @Get(':id') findOne(@Param('id') id: 文字列): Promise<UserEntity> { this.userService.findOne(id) を返します。 } 最後のクエリではパスワードの表示が省略されます。 要約するNest.js 環境変数の設定とシリアル化に関するこの記事はこれで終わりです。Nest.js 環境変数の設定に関するその他の関連コンテンツについては、123WORDPRESS.COM で過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 |
<<: MySQL における Decimal 型と Float Double 型の違い (詳細説明)
>>: CentOS7にNginxをインストールして自動起動を設定する方法
Ubuntu をインストールしたばかりですが、開いたときにネットワーク接続がありませんでした。右上隅...
1. リンク解除機能ハード リンクの場合、unlink はディレクトリ エントリを削除し、inode...
explain はクエリ実行プラン情報を取得するために使用されます。 1. 文法次のように、sele...
1. ネットワーク接続方法がブリッジされていることを確認する物理ネットワーク接続ステータスのコピーを...
序文Linux システムの管理と保守のプロセスでは、多数のコマンドが使用されます。非常に長いコマンド...
Robots.txt はプレーンテキスト ファイルであり、Web サイト管理者は、ロボットによるアク...
「.zip」形式は、Windows システムでファイルを圧縮するために使用されます。実際、「.zip...
この記事では、カルーセルの効果を実現するためのJavaScriptの具体的なコードを参考までに共有し...
1. 関連ツールと画像をダウンロードするダウンロードリンクバーチャルボックス: https://do...
目次1. 浅いクローニング2. ディープクローニング1. 浅いクローニング浅いクローンでは配列やオブ...
MySQL 5.7.17、現在最新バージョンのようです、ダウンロードアドレスここで、プラットフォーム...
スプレッド演算子を使用すると、式をある時点で展開できます。スプレッド演算子は、複数のパラメーター (...
MySQLをインストールしてメモしておきます。うまくインストールできるか分かりませんが、試してみます...
目次背景: Nginx スムーズ アップグレード ソリューションフォールバック手順要約する背景:負荷...
xshellを使用してLinuxに接続する利点Windows環境でLinuxを直接操作できるインター...