새소식

BE/NestJS

NestJS : MongoDB 연결 및 환경 변수 설정

  • -

NestJS 공식문서: https://docs.nestjs.com/first-steps 

 

NestJS 프로젝트 생성

$ nest new project-name

 

Mongo dependency 설치

$ npm install --save @nestjs/mongoose mongoose

 

app.module.ts 파일에 mongoose module을 import

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

@Module({
  imports: [MongooseModule.forRoot('mongodb://localhost/nest')],
})
export class AppModule {}

모듈들이 여러개가 있고 이 여러개의 모듈들이 app.module에 import가 되서 이 app.module이 main.ts에서 실행이 되는 것이다.

 

 

환경 변수 설정

MongoDB_URI는 공개되어서는 안되기때문에 환경 변수 설정이 필요하다.

$ npm i --save @nestjs/config

ConfigModule 또한 app.module.ts에서 import 해주어야 사용이 가능하다.

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

@Module({
  imports: [ConfigModule.forRoot()],
})
export class AppModule {}

그리고 .env 파일을 만들고 다음과 같이 MongoDB_URI와 PORT 번호를 환경변수로 설정한다.

MONGODB_URI = "mongodb+srv://<username>:<password>@kbh.rcun4.mongodb.net/?retryWrites=true&w=majority"

PORT = 8000

 

그럼 다음과 같은 app.module.ts 파일이 최종적으로 산출된다.

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { MongooseModule } from '@nestjs/mongoose';
import { ConfigModule } from '@nestjs/config';

@Module({
  imports: [
    ConfigModule.forRoot(),
    MongooseModule.forRoot(process.env.MONGODB_URI, {
      useNewUrlParser: true,
      useUnifiedTopology: true,
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

useNewUrlParser : true 

- mongodb url를 읽을 수 있도록 설정하는 옵션

useUnifiedTopology: true

- 최신 mongodb 드라이버 엔진을 사용하도록 설정하는 옵션

 

Port 번호도 환경변수로 설정했으므로 main.ts에서 이를 이용해준다.

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

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

'BE > NestJS' 카테고리의 다른 글

NestJS : CORS  (0) 2022.06.03
NestJS : swagger  (0) 2022.06.02
NestJS : DTO 패턴 & 회원가입 service  (0) 2022.05.29
NestJS : DB Schema 설계 및 Validation  (0) 2022.05.28
NestJS : 로직  (0) 2022.05.28
Contents