node.js
Nest.Js - mongoDB 연결
존태
2022. 8. 29. 12:40
MongoDB
Nest는 MongoDB 데이터베이스와 통합하는 두 가지 방법을 지원합니다. 여기 에 설명된 MongoDB용 커넥터가 있는 내장 TypeORM 모듈 을 사용하거나 가장 인기 있는 MongoDB 객체 모델링 도구인 Mongoose 를 사용할 수 있습니다. 이 장에서는 전용 패키지 를 사용하여 후자를 설명합니다 .
필요한 종속성 을 설치하여 시작하십시오 .
$ npm i @nestjs/mongoose mongoose
MongooseModule설치 프로세스가 완료되면 루트로 가져올 수 있습니다.
app.module.ts
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
@Module({
imports: [MongooseModule.forRoot('mongodb://localhost/nest')],
})
export class AppModule {}
모델 주입
Mongoose를 사용하면 모든 것이 Schema 에서 파생됩니다 . 각 스키마는 MongoDB 컬렉션에 매핑되고 해당 컬렉션 내 문서의 모양을 정의합니다. 스키마는 모델 을 정의하는 데 사용됩니다 . 모델은 기본 MongoDB 데이터베이스에서 문서를 만들고 읽는 책임이 있습니다.
스키마는 NestJS 데코레이터를 사용하거나 Mongoose 자체를 사용하여 수동으로 만들 수 있습니다. 데코레이터를 사용하여 스키마를 생성하면 상용구를 크게 줄이고 전체 코드 가독성을 향상시킵니다.
imports: [MongooseModule.forRoot('mongodb://localhost/nest')], 밑줄 친 부분에 MongoDB URI가 들어가게 되는데 이 URI
는 절대 외부에 유출되면 안된다. 따라서 외부에서 정의된 환경 변수는 process.env전역을 통해 안전하게 보호해야한다.
$ npm i --save @nestjs/config
app.module.ts
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
@Module({
imports: [ConfigModule.forRoot()],
})
export class AppModule {}
샘플 .env파일은 다음과 같습니다.
DATABASE_USER=test
DATABASE_PASSWORD=test