Wecode -기업협업 인턴 (부트캠프)/기업협업 독학, 공부

@nestjs/core, nest.js에서는 database 연결을 어디에서 하니 ***

JBS 12 2023. 11. 1. 21:37

@nestjs

 

'@nestjs/core 패키지는 Nest.js 애플리케이션의 핵심 기능을 제공하는 Nest.js 프레임워크의 핵심 모듈 중 하나입니다. 이 패키지는 Nest.js 애플리케이션의 기본적인 구조와 런타임 동작을 정의하며 다음과 같은 주요 기능을 포함합니다:

Dependency Injection (의존성 주입): @nestjs/core는 Nest.js의 주요 기능 중 하나인 의존성 주입(Dependency Injection) 패턴을 구현합니다. 이를 통해 클래스 및 서비스 간의 의존성을 쉽게 관리하고 컴포넌트의 느슨한 결합(Loose Coupling)을 촉진합니다.

HTTP 서버 관리: Nest.js는 HTTP 서버를 생성하고 관리하는 데 사용되는 클래스와 모듈을 제공합니다. 이를 통해 Express.js 또는 Fastify와 같은 웹 프레임워크와 통합하여 HTTP 요청 및 응답을 처리할 수 있습니다.

Middleware 및 가드: HTTP 미들웨어 및 가드를 사용하여 요청 처리 과정을 중간에 수정하고 제어할 수 있습니다.

루트 모듈 및 애플리케이션 부트스트래핑: Nest.js 애플리케이션의 진입점 및 루트 모듈을 정의하고 애플리케이션을 부트스트랩하는 기능을 제공합니다.

데코레이터와 메타데이터: Nest.js에서 사용되는 데코레이터 및 메타데이터를 처리하고 분석하는 데 필요한 클래스 및 함수를 포함합니다.

@nestjs/core 패키지는 Nest.js 애플리케이션을 만들고 구동하는 데 필수적인 핵심 요소를 제공합니다. Nest.js 애플리케이션을 개발할 때 이 패키지는 주요 의존성 중 하나이며, 다른 패키지 및 모듈과 함께 사용


nest.js에서는 database 연결을 어디에서 하니

 

Nest.js 애플리케이션에서 데이터베이스 연결을 어디에서 하는지에 대한 접근 방식은 애플리케이션의 구조 및 개발자의 선호에 따라 다를 수 있습니다. 그러나 일반적으로 데이터베이스 연결을 다음 두 가지 주요 방법 중 하나를 사용하여 설정합니다:

1. 모듈을 사용한 데이터베이스 연결:

Nest.js에서는 데이터베이스 연결을 설정하기 위해 모듈을 사용하는 것이 일반적입니다. 데이터베이스 모듈을 생성하고 해당 모듈에서 데이터베이스 연결을 설정하며 필요한 서비스 및 리포지토리를 내보냅니다. 이 모듈은 애플리케이션의 다른 모듈에서 가져와 사용됩니다.

 

typescript

 

// database.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { UserEntity } from './user.entity';

@Module({
  imports: [TypeOrmModule.forRoot({
    type: 'mysql',
    host: 'localhost',
    port: 3306,
    username: 'user',
    password: 'password',
    database: 'mydb',
    entities: [UserEntity],
    synchronize: true,
  })],
  exports: [TypeOrmModule],
})
export class DatabaseModule {}

 


이 모듈은 TypeORM을 사용한 데이터베이스 연결 설정의 예입니다.

 

 

2. 애플리케이션의 진입점에서 데이터베이스 연결:

Nest.js 애플리케이션의 진입점 파일(main.ts 또는 app.module.ts)에서 데이터베이스 연결을 직접 설정할 수도 있습니다. 이 방식은 간단한 애플리케이션에서 사용될 수 있습니다.

 

 

typescript

 

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { TypeOrmModule } from '@nestjs/typeorm';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  await TypeOrmModule.forRoot({
    type: 'mysql',
    host: 'localhost',
    port: 3306,
    username: 'user',
    password: 'password',
    database: 'mydb',
    synchronize: true,
  });

  await app.listen(3000);
}
bootstrap();

 


이 방식은 단순한 애플리케이션에서 사용할 수 있지만, 모듈을 사용하는 방식이 애플리케이션의 구조와 유지 관리를 더 쉽게 만들어줍니다.

일반적으로 Nest.js에서는 모듈을 사용하여 데이터베이스 연결을 설정하고 데이터베이스와 상호 작용을 위한 서비스 및 리포지토리를 만듭니다. 데이터베이스 모듈을 만들어서 애플리케이션의 다양한 모듈에서 재사용할 수 있도록 하는 것이 일반적입니다.