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
'Research > Nest.js' 카테고리의 다른 글
nestjs_mongoose 스키마 설계 후 class-validator 적용 (0) | 2023.04.05 |
---|---|
nestjs_배포 환경에 따른 mongoDB 로깅 설정 (0) | 2023.04.05 |
nestjs_횡적 부가기능을 위한 interceptor (0) | 2023.04.04 |
nestjs_pipe로 변환과 유효성 검사 진행하기 (0) | 2023.04.04 |
nestjs_filter로 에러 처리하기 (0) | 2023.04.04 |
댓글