설치
# Nest.js에서 TypeORM을 연동시켜주기 위해 사용하는 모듈
npm install --save @nestjs/typeorm
# typeorm module
npm install --save typeorm
# 사용하고자 하는 DB의 모듈을 설치해주면 됨(pg는 postgreSql)
npm install --save pg
셋팅 방법
기본적으로 NestJS TypeORM을 사용하기 위해서는 셋팅 할 부분이 조금 많다.
@Module({
imports: [
TypeOrmModule.forRoot(typeORMConfig),
CategorysModule,
PostsModule,
CommentMasterModule,
CommentModule,
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
app.module.ts
import { TypeOrmModuleOptions } from "@nestjs/typeorm";
import * as dotenv from "dotenv";
dotenv.config();
export const typeORMConfig: TypeOrmModuleOptions = {
type: "mysql",
host: "localhost",
port: 3306,
username: process.env.DB_USER_NAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
synchronize: true,
entities: [__dirname + "/**/*.entity{.ts,.js}"],
// migrations: [__dirname + "/**/migrations/*.js"],
logging: true,
verboseRetryLog: true,
autoLoadEntities: true,
retryAttempts: 3000,
};
config/typeorm.config.ts
NestJS에서는
env
를 사용하려면 위 처럼 dotenv.config()
를 작성해 줘야지 사용 가능하다.사용 방법
보통 DB를 typeorm으로 컨트롤 하는 로직 자체는 ~.service.ts
에 주로 위치해 있습니다.
예를 들어서 posts.service.ts
를 살펴보게 되면 아래와 같이 사용 가능합니다.
...
@Injectable()
export class PostsService {
@InjectRepository(PostEntity) private postRepository: Repository<PostEntity>;
constructor(private dataSource: DataSource) {}
async findOne(id: number, category: string): Promise<object> {
// if (category === "all") {
const post = await this.postRepository.find();
// }
return post;
}
}
위 처럼 InjectRepository
를 통해서 Repository
를 통해서 의존성을 주입 합니다.
위에서 의존성을 주입 한 다음에는 내부적으로 private
으로 사용할 수 있게, 객체를 만들고 사용 합니다.
spring과는 다른 방식으로 Nest에서 의존성을 주입하는 것 같은데,,,이는 좀 알아봐야할 요소 인듯 하다.
#Back #NodeJS #NestJS #DB #ORM