반응형
nestjs config 설정
"nestjs typeorm3 postgresql 연동"
nestjs typeorm 개념
TypeORM은 TypeScript와 JavaScript를 위한 ORM(Object-Relational Mapping) 라이브러리 이다.
데이터베이스 레코드를 일반 TypeScript 오브젝트인 것처럼 작업할 수 있도록 하여 관계형 데이터베이스와의 상호 작용을 단순화합니다.
nestjs typeorm 설치
아래와 같이 typeorm 모듈과 pg 모듈을 설치한다.
$ npm install pg typeorm @nestjs/typeorm --save
Tip!
설치시 반응이 없거나 아래 이미지와 같은 오류가 발생한다면 아래 내용을 확인바란다.
인터넷이 KT망일경우 현재까지 ts-jest가 설치되지 않는다. registry의 미러서버를 변경해야 한다.
방법1번
# npm 캐시 clean
npm cache clean --force
# registry 정보를 아래정보로 변경
npm config set registry https://registry.npmjs.org/
방법2번
# npm 캐시 clean
npm cache clean --force
# registry 정보를 아래정보로 변경
npm config set registry https://registry.npmjs.cf/
#프로젝트 생성
nest new ./
or
nest new 프로젝트명
# postgresql 관련패키지 설치후 아래 registry 주소로 재변경
npm config set registry https://registry.npmjs.org/
nestjs typeorm postgresql 연동
1.폴더구조
2. 소스코드정보
src > config > database > typeorm.config.ts
import { ConfigModule, ConfigService } from '@nestjs/config';
import {
TypeOrmModuleAsyncOptions,
TypeOrmModuleOptions,
} from '@nestjs/typeorm';
export default class TypeOrmConfig {
static getOrmConfig(configService: ConfigService): TypeOrmModuleOptions {
return {
type: configService.get<any>('db.postgres.type'),
host: configService.get<string>('db.postgres.host') || 'localhost',
port: configService.get<number>('db.postgres.port') || 5432,
username: configService.get<string>('db.postgres.username'),
password: configService.get<string>('db.postgres.password'),
database: configService.get<string>('db.postgres.database'),
//entities: [User],
migrations: ['src/config/database/migrations/*.ts'],
migrationsTableName: 'migrations',
synchronize:
configService.get<boolean>('db.postgres.synchronize') || false,
logging: true,
};
}
}
export const typeOrmConfigAsync: TypeOrmModuleAsyncOptions = {
imports: [ConfigModule],
useFactory: async (
configService: ConfigService,
): Promise<TypeOrmModuleOptions> => TypeOrmConfig.getOrmConfig(configService),
inject: [ConfigService],
};
src > config > profile > dev.yaml
server:
port: 3001
url: '서버주소'
db:
postgres:
type: 'postgres'
host: '서버주소'
port: 5432
username: '아이디'
password: '비밀번호'
database: '스키마명'
synchronize: false
src > config > profile > prod.yaml
server:
port: 3000
url: '서버주소'
db:
postgres:
type: 'postgres'
host: '서버주소'
port: 5432
username: '아이디'
password: '비밀번호'
database: '스키마명'
synchronize: false
src > app.module.ts
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { typeOrmConfigAsync } from './config/database/typeorm.config';
import configuration from './config/profile/profile.config';
@Module({
imports: [
ConfigModule.forRoot({ load: [configuration] }),
TypeOrmModule.forRootAsync(typeOrmConfigAsync),
],
})
export class AppModule {}
npm run start:dev 명령어로 실행하면 아래와 같이 실행된다.
3. 프로젝트생성 및 yaml 설정
nestjs-cli를 통하여 프로젝트를 생성하고 configuration 설정하기위한 소스는 아래 글에 작성되어 있다.
프로젝트 폴더구조및 전체소스정보가 필요하다면 아래 포스팅을 참고바란다.
https://arckwon.tistory.com/entry/nestjs-nestjs-typeorm-configuration-%EC%84%A4%EC%A0%95
반응형
'개발 > nest.js' 카테고리의 다른 글
[nestjs] nestjs : middleware logger 사용하기 (0) | 2023.08.22 |
---|---|
[nestjs] nestjs : typeorm : configuration 설정 (0) | 2023.08.18 |
[nvm] node : nvm : 설치 및 여러버전관리 (윈도우,리눅스) (0) | 2023.08.18 |
nestjs + typeorm backend JWT 로그인 / 소스포함 (0) | 2023.03.30 |
nestjs + typeorm backend 회원가입 / 소스포함 (10) (0) | 2023.03.29 |