[Nest] 당근마켓 클론코딩 1편

유진수·2021년 9월 10일
1
post-thumbnail

개발환경

nestjs v8.0.2
postgresql

1. 개발환경세팅 & DB연결

1.1 폴더생성

    clone-carrot

1.2 nest project 생성

$ nest new server

패키지 선택 : npm

1.3 DB 생성

  1. postgres 가 깔려있다고 가정하고 진행하겠습니다. 설치는 굉장히 쉽고 환경변수 설정도 자동으로 해주기 때문에 어렵지 않을꺼에요 !

  2. pgAdmin 실행 후 DB생성

	database 이름만 입력 후 Save 버튼 클릭
    

1.4 env-cmd 활용하여 DB정보 시스템 변수로 사용하기

  1. $ npm install -g env-cmd ( 전역으로 설치하시는게 저는 편하더라구요 -g 안붙여도 됩니다.)

  2. config 폴더 생성하기 ( 최상위폴더, src 와 같은 레벨 )

  3. 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 설정에 맞춰 작성하시면 됩니다.
  1. server/package.json 파일 수정
server/package.json
    ...
    "scripts": {
        "prebuild": ...
        ...
        ...
        "start:dev": "env-cmd -f ./config/dev.env nest start --watch",
        ...
        ...
    }
  1. src/database 폴더 생성 후 typeorm.config.ts 파일 생성
  // 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,
  }

1.5 package 설치 & DB연결 확인

$ 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
...
와 같은 로그가 나와있다면 성공입니다 !

1.6 폴더구조

profile
💻 greedy 50

0개의 댓글