본문 바로가기
Research/Nest.js

nestjs_환경변수 설정 +mongodb 연동

by RIEM 2023. 4. 5.
728x90

nestjs에서 mongoDB를 사용하는 방법은 2가지인데, TypeORM 모듈을 사용하거나 Mongoose ODM을 사용하는 것이다. 우리는 mongoose 를 사용하는 방식으로 nestjs 프로젝트를 DB에 연동해보자.

mongoose 모듈 설치

// @nestjs/mongoose 설치
$ npm i @nestjs/mongoose mongoose


환경변수 config 모듈 설치

npm i --save @nestjs/config

https://docs.nestjs.com/techniques/configuration

환경변수 설정을 하기 위해서 @nestjs/config를 설치하면 된다.

 

환경변수 .env 파일 생성

MONGODB_URI="<mongodb_URI>"
PORT=8000

로컬 디렉토리에 .env 파일 생성해준다. mongodb URI는 클라우드 웹사이트에서 connect를 눌러 확인하면 조회할 수 있다.

 

환경변수 적용 -> mongoose 모듈 URI

app 모듈에서 ConfigModule을 import하면 환경변수를 process.env 프로퍼티로 접근할 수 있게 된다. 그러하여 import 하는 MongooseModule에도 URI를 명시적으로 넣지 않고 환경변수로 숨겨서 기입할 수 있다.

// app.module.ts
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { CatsModule } from './cats/cats.module';
import { CatsService } from './cats/cats.service';
import { LoggerMiddleware } from './logger/logger.middleware';
import { MongooseModule } from '@nestjs/mongoose';
import { ConfigModule } from '@nestjs/config';

// app.module.ts

@Module({
  imports: [
    CatsModule,
    // 환경변수를 위한 모듈
    ConfigModule.forRoot(),
    // mongoose 사용을 위한 모듈
    MongooseModule.forRoot(process.env.MONGODB_URI, {
      useNewUrlParser: true, //mongodb url 읽기 위한 설정
      useUnifiedTopology: true, // mongodb 최신 드라이버 엔진 사용을 위한 설정
    }),
  ],
  controllers: [AppController],
  providers: [AppService, CatsService],
})
export class AppModule implements NestModule {
  configure(consumer: MiddlewareConsumer) {
    // 모든 엔드포인트에 로그 적용
    consumer.apply(LoggerMiddleware).forRoutes('*');
  }
}

 

환경변수 적용 -> PORT 번호

// main.ts

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { HttpExceptionFilter } from './common/exceptions/http-exception.filter';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.useGlobalFilters(new HttpExceptionFilter());
  const PORT = process.env.PORT;
  await app.listen(PORT);
}
bootstrap();

일반적으로 PORT 번호도 환경변수로 지정한다.

728x90

댓글