環境変数化と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,
}),
}),
],
})
これでいままで通りデータが取得できていれば問題ない。