nestjs 설정

  1. npm i -g @nestjs/cli

  2. nest new server

  3. src/main.ts → 4000번 포트로 변경

  4. src 에 필요없는 파일 + Readme 제거

  5. deploy 실행권한 부여

    $ git update-index --chmod=+x ./deploy-server.sh
    $ git update-index --chmod=+x ./deploy-client.sh
    
    # deploy-server.sh
    
    #!/bin/bash
    cd server
    yarn install
    yarn build
    pm2 restart moj_server
    cd ..
    
    # deploy-client.sh
    
    #!/bin/bash
    cd client
    yarn install
    yarn build
    pm2 restart moj_client
    cd ..
    

postgreSQL 설치

[postgresql] Ubuntu에서 postgresql 설치하고 외부 접속 열어주기

TypeORM 설치

  1. yarn add typeorm pg

  2. yarn add @nestjs/typeorm

  3. .env 파일 만들기

    POSTGRESQL_HOST=49.50.164.235
    POSTGRESQL_PORT=5432
    POSTGRESQL_USERNAME=hi
    POSTGRESQL_PASSWORD=**********
    POSTGRESQL_DATABASE=moj
    
  4. yarn add @nestjs/config

  5. app.module.ts 파일 수정

    import { Module } from '@nestjs/common';
    import { ConfigModule, ConfigService } from '@nestjs/config';
    import { TypeOrmModule } from '@nestjs/typeorm';
    
    @Module({
      imports: [
        ConfigModule.forRoot({
          isGlobal: true,
        }),
        TypeOrmModule.forRootAsync({
          imports: [ConfigModule],
          useFactory: (configService: ConfigService) => ({
            type: 'postgres',
            host: configService.get('POSTGRESQL_HOST'),
            port: +configService.get('POSTGRESQL_PORT'),
            username: configService.get('POSTGRESQL_USERNAME'),
            password: configService.get('POSTGRESQL_PASSWORD'),
            database: configService.get('POSTGRESQL_DATABASE'),
            autoLoadEntities: true,
            synchronize: true,
          }),
          inject: [ConfigService],
        }),
      ],
      controllers: [],
      providers: [],
    })
    export class AppModule {}
    
  6. 네이밍 컨벤션(js, DB) 충돌 해결

    자바스크립트에서는 camelCase를 사용하고 DB에서는 snake_case를 사용하는데 ORM을 사용하면 자바스크립트 변수명 그대로 DB 컬럼 이름으로 적용해 둘이 맞지 않는 문제가 존재합니다. 그래서 naming strategy를 정해줘 문제를 해결해주었습니다.