[NestJS] .env 경로 설정

https://www.mongodb.com/ko-kr/docs/manual/tutorial/install-mongodb-community-with-docker/

Docker를 사용하여 MongoDB Community 설치 - MongoDB 매뉴얼 v7.0

공식 MongoDB 커뮤니티 이미지를 사용하여 MongoDB 커뮤니티 에디션을 Docker container로 실행할 수 있습니다. MongoDB 배포서버를 실행하기 위한 Docker 이미지는 다음과 같은 경우에 유용합니다.신속한 배

www.mongodb.com

 
몽고디비와 도커 연결을 위해 명령어를 입력해준다. 

docker pull mongodb/mongodb-community-server:latest
docker run --name mongodb -p 27017:27017 -d mongodb/mongodb-community-server:latest

 
 
 
nestJS 환경에서 설정하였으며 아래와 같이 env 파일을 이용해 연결해주었다.
 

@Module({
  imports: [
    ConfigModule.forRoot({
      envFilePath: ['stage.dev.env'],
    }),
    TypeOrmModule.forRootAsync({
      imports: [ConfigModule],
      inject: [ConfigService],
      useFactory: async (configService: ConfigService) => {
        return {
          type: 'mongodb',
          url: configService.get('DB_URL'),
          port: configService.get('DB_PORT'),
          autoLoadEntities: true,
          synchronize: true,
          entities: [__dirname + '/**/*.entity{.ts,.js}'],
        };
      },
    }),
  ],
})
export class AppModule {}

 
 
env 파일을 연결할 때 .env가 들어간 파일 이름을 그대로 명시해주어도 되며,
상대경로, 절대경로 모두 인식 가능하다.
 
기본 이름일 때는 .env 로 명명 하는 경우가 많으나 위의 경우 처럼 'stage.dev.env' 가 이름인 경우 .stage.dev.env 가 아닌 stage.dev.env로 명명해주어야 했다..!
 

만약 .env가 인식되지 않는 경우

NestJS에서 MongoDB를 연결할 때 아무 환경 변수도 설정하지 않았다면, 기본적으로 `localhost:27017`로 연결된다. 

NestJS에서 MongoDB와의 연결은 `@nestjs/mongoose` 또는 `@nestjs/typeorm` 패키지를 사용해 이루어 지는데, 이 패키지들은 내부적으로 MongoDB 클라이언트를 사용하여 기본적으로 `mongodb://localhost:27017/test` 경로로 연결하려고 한다.
여기서 `/test`는 기본적으로 사용하는 데이터베이스 이다.

만약 환경 변수나 다른 설정을 따로 지정하지 않았다면, 이런 기본 설정값으로 연결될 수 있다.