1. 문제
[mongoosemodule] unable to connect to the database
강의와 문서들을 보며 몽구스를 연결시도했다.
그런데 서버실행만 하면 계속 위와 같은 문구가 발생하여 나를 괴롭혔다......ㅠㅠ
수차례 여러가지를 시도 했는데 안되니까 멘붕
2. 시도해본 것들
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { MongooseModule } from '@nestjs/mongoose';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ChatBackEndModule } from './chatBackEnd/chatBackEnd.module';
import { ChatFrontEndModule } from './chatFrontEnd/chatFrontEnd.module';
import { TypeOrmConfigService } from './common/config/typeorm.config.service';
import * as mongoose from 'mongoose'; //몽구스
import { LoggerMiddleware } from './logger/logger.middleware'; //미완성 로그 => 강의를 중구난방으로 들어서 찾기 어려움
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
//몽구스 연결 process.env.MONGO_URL
MongooseModule.forRoot(process.env.MONGO_URL, {
useNewUrlParser: true,
useUnifiedTopology: true,
// useCreateIndex: true,
// useFindAndModify: false,
}),
TypeOrmModule.forRootAsync({
useClass: TypeOrmConfigService,
}),
ChatBackEndModule,
ChatFrontEndModule,
],
})
//몽구스 추가설정
export class AppModule implements NestModule {
private readonly isDev: boolean = process.env.MODE === 'dev' ? true : false;
configure(consumer: MiddlewareConsumer) {
consumer.apply(LoggerMiddleware).forRoutes('*');
mongoose.set('debug', this.isDev);
}
}
app.module.ts의 구성이었다.
시도해본 것은 환경설정값 대신 직접 입력하거나,
ConfigModule의 순서를 바꾸거나
useNewParser을 주석처리하거나 온갖 해결방법을 찾아서 다 시도해봤지만 실패했다.
3. 해결과정
방법을 찾던 도중 스택오버플로우에서 다음과 같은 글귀를 봤다
https://stackoverflow.com/questions/70730514/unable-to-connect-to-the-database-retrying
데이터 연결하면 Retrying(3)... (4)...
이렇게 뜨는데 상세한 에러 문구가 없어서 뭐 어쩌라고! 라는 심정이었다
그런데 10번만 기다리면 상세문구를 준다고?
4. 알게 된 점
몽고디비, 몽구스 연결시도 10회를 채우기로 했다.
도대체 뭐가 문제인지 궁금했다. 상세메시지를 봐야 해결할 수 있지 않을까?
강의보고 따라 작성한 옵션이고, 나는 최신몽구스를 설치한 것 같은데
해당 옵션은 지원하지 않는다고 한다. 주석처리하니 문제가 해결되었다.
역시 에러코드가 자세히 나와야 문제를 해결할 수 있다.
몽구스가 10회 시도후 에러문구를 발생시킨다는것을 잊지말자.