MariaDB와 VScode, NestJS 프로젝트 연결하기

김민준·2023년 11월 16일
0
post-thumbnail

프론트 팀원과의 대화
MariaDB와 VScode, NestJS 프로젝트 연결하기

프론트 팀원과의 대화

옆자리 팀원이 물었다.

  • Q :"회원가입 요청을 저희가 보면 백에서는 어떻게 처리하고 응답해요?"
    A : 우선 201 응답을 내보냅니다. : 요청이 성공했고 새로운 자원이 생성되었다.
  • Q :"서버에서 따로 검증은 안하나요?"
    A : 원래는 서비스단에서 검증하게 만들었었는데, 클라이언트에서 모두 검증해서 보내주니 중복 이메일 정도만 검증 할 것같다.
  • Q :"중복이면 어떤 HTTP상태 코드가 오나요?"
    A : 409코드가 갑니다.

정말 간단한건데 말이 바로 나오지는 않았다. 정리를 한거여서 바로 질문과 답변이 일어난 것같지 실제로는 좀 찾아보고 대답했따. 아직 공부가 부족한가보다.

MariaDB와 VScode, NestJS 프로젝트 연결하기

설치법과 설치중 오류는 링크 참조

MariaDB에 DB생성하고 확인하기

  • cmd 또는 명령 프롬프트
  • mysql -u <유저명> -p + 비밀번호 입력
  • CREATE DATABASE <DB이름>; : 꼭 ;까지 입력할 것, DB명은 문자, 숫자, 밑줄 및 일부 특수 문자로 제한되어있다고 한다.
  • SHOW DATABASES; : 현재 존재하는 DB 확인
  • USE <DB이름>; : DB 선택하기
  • DESCRIBE <table이름>; : table 구조 보기
  • SELECT * FROM <table이름>; : table 내용 보기

위와 같이 확인이 가능하지만 너무 불편하다. vscode에 연결해서 확인해보자.

VScode에 MariaDB 연결하기

  • VScode의 extenstions에서 mysql을 설치한다.
    두가지 버ㄴ이 있는데 client 버전으로 설치하자(빨간색+파란색이 클라이언트 버전이다.)
  • NoSQL에서 Create Connection을 누르고 MariaDB의 유저명과 비밀번호는 필수로 입력하자.
    연결명등은 취향껏
  • DataBase에서 방금 만든 DB를 확인할 수 있다.
  • 연결에 우클릭하고 Edit Connection을 누르면 설정을 바꿀 수 있다.

    연결의 이름을 새로 설정하고 싶거나, MariaDB의 ID,PW가 바뀌었다면 갱신해주자.

NestJS 프로젝트에 MariaDB 연결하기

app.module.ts 파일에 입력을하고 그것을 main.ts에서 불러온다.

//  src/app.modul.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AuthModule } from './auth/auth.module';

import { AppController } from './app.controller';
import { AppService } from './app.service';
import { User } from './auth/entities';

@Module({
  imports: [
    AuthModule,
    TypeOrmModule.forRoot({
      type: 'mariadb',
      host: 'localhost',
      port: 3306,
      username: 'username',
      password: 'password',
      database: 'database',
      entities: [__dirname + '/**/*.entity{.ts,.js}'],
      synchronize: true,
      logging: true,
    }),
    TypeOrmModule.forFeature([User]),
  ],
  controllers: [AppController],
  providers: [AppService],
  exports: [AppService],
})
export class AppModule {}
//  src/main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

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

이렇게하면 repository에서 entity대로 DB와 상호작용할 것이다.

이상태대로면 github등에 올릴 때 비밀번호가 유출될 것이다.

  • npm install --save @nestjs/config : dotenv설치
  • 코드를 교체한다.
type DbType = 'aurora-mysql' | 'mariadb';

@Module({
  imports: [
    ConfigModule.forRoot(),
    AuthModule,
    TypeOrmModule.forRootAsync({
      useFactory: () => ({
        type: (process.env.DB_TYPE || 'mariadb') as DbType,
        host: process.env.DB_HOST || 'localhost',
        port: parseInt(process.env.DB_PORT, 10) || 3306,
        username: process.env.DB_USERNAME || 'root',
        password: process.env.DB_PASSWORD || 'devcamp11',
        database: process.env.DB_DATABASE || 'devcamp11',

type을 따로 지정하지 않으면 자꾸 auroa-mysql에 string으로 인식해서 추가적으로 덧붙였다.

  • 루트 폴더에 .env 생성
DB_TYPE=mariadb
DB_HOST=localhost
DB_PORT=3306
DB_USERNAME=username
DB_PASSWORD=password
DB_DATABASE=devcamp11

윈도우 버전의 경우 아래 링크를 참조

https://kitty-geno.tistory.com/55
https://kitty-geno.tistory.com/56

profile
node 개발자

0개의 댓글

관련 채용 정보