# NestJSでMySQLと接続するモジュールを外部化し環境変数にする

2 min read
Table of Contents

環境変数化とDB接続のモジュール化

綺麗にって漠然と書いたが、

  • 環境変数化
  • DB接続のモジュール作成

を行っていく。

DB接続のモジュール作成

まずは外部モジュール化する。

nest g mo database

で、データ接続用のモジュールを作成する。

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRootAsync({
useFactory: () => ({
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'username',
password: 'password',
database: 'database-name',
entities: [],
synchronize: true,
}),
}),
],
})
export class DatabaseModule { }

次に、app.module.tsの方を編集する。

@Module({
imports: [
DatabaseModule,
],

設定をべたでimportしていたので、それを外部モジュールに変換する。

これで外部化は完了。

環境変数化

次に環境変数化していく。

npm install @nestjs/config

で、環境変数から読み込むためのパッケージをインストールする。

バージョンは "@nestjs/config": "^2.3.1"だった。

.envファイルをルートに作成し、そこに環境変数を作成する。

DATABASE_USER=test
DATABASE_PASSWORD=test

DatabaseModuleの読み込みを環境変数に変更する。

@Module({
imports: [
TypeOrmModule.forRootAsync({
imports: [
ConfigModule.forRoot({
envFilePath: [".env"],
}),
],
useFactory: () => ({
type: 'mysql',
host: process.env.DATABASE_HOST,
port: Number(process.env.DATABASE_PORT),
username: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE_NAME,
entities: [Sample],
synchronize: true,
}),
}),
],
})

これでいままで通りデータが取得できていれば問題ない。

My avatar

Thanks for reading my blog post! Feel free to check out my other posts or contact me via the social links in the footer.


More Posts

# Githubでリポジトリ用のプルリクエストテンプレートを作成する

3 min read

プルリク時に各々違うフォーマットで書かれるとレビューする人が大変なので、テンプレートを使用し共通化を図ることにした。 基本的にリポジトリ用のプルリクエストテンプレートの作成を参考にすれば間違いないが、ここでは最もシンプルな方法を共有する。

Read

Comments