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();