새소식

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
Contents