nestjs v8.0.2
postgresql
clone-carrot
$ nest new server
패키지 선택 : npm
postgres 가 깔려있다고 가정하고 진행하겠습니다. 설치는 굉장히 쉽고 환경변수 설정도 자동으로 해주기 때문에 어렵지 않을꺼에요 !
pgAdmin 실행 후 DB생성
database 이름만 입력 후 Save 버튼 클릭
$ npm install -g env-cmd
( 전역으로 설치하시는게 저는 편하더라구요 -g 안붙여도 됩니다.)
config 폴더 생성하기 ( 최상위폴더, src 와 같은 레벨 )
dev.env 파일 생성
# dev.env
DB_HOST=127.0.0.1
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=postgresPassword
DB_DATABASE=clone-carrot
우선은 로컬DB로 사용하고 추후 rds 를 연동할 예정입니다.
해당 정보는 본인의 DB 설정에 맞춰 작성하시면 됩니다.
server/package.json
...
"scripts": {
"prebuild": ...
...
...
"start:dev": "env-cmd -f ./config/dev.env nest start --watch",
...
...
}
// typeorm.config.ts
import { TypeOrmModuleOptions } from "@nestjs/typeorm";
export const typeOrmConfig: TypeOrmModuleOptions = {
type: 'postgres',
host: process.env.DB_HOST,
port: parseInt(process.env.DB_PORT),
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
autoLoadEntities: true,
synchronize: true,
logging: true,
}
$ npm install @nestjs/typeorm typeorm pg
(postgresql 을 사용하기 위한 3요소, 자세한 내용은 추가적으로 작성하겠습니다.)
--save 옵션을 사용하지 않아도 (npm install @nestjs/typeorm --save) npm5 부터는
자동으로 package.json 파일 내 dependency 목록에 추가됩니다.
// app.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { typeOrmConfig } from './database/typeorm.config';
@Module({
imports: [
TypeOrmModule.forRoot(typeOrmConfig), // 좀 전에 만든 typeorm.config.ts
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
여기까지 하셨으면 nest서버와 앞서 만든 db가 연동되었습니다.
$ npm run start:dev
를 통해 서버를 실행시켜 보세요 !
http://localhost:3000 을 들어가보면 hello world! 가 뜨고
터미널 창을 보면
...
query: START TRANSACTION
query: SELECT * FROM current_schema()
query: SELECT * FROM "information_schema" blah blah ~
query: SELECT * FROM current_schema()
query: COMMIT
...
와 같은 로그가 나와있다면 성공입니다 !