프론트 팀원과의 대화
MariaDB와 VScode, NestJS 프로젝트 연결하기
옆자리 팀원이 물었다.
정말 간단한건데 말이 바로 나오지는 않았다. 정리를 한거여서 바로 질문과 답변이 일어난 것같지 실제로는 좀 찾아보고 대답했따. 아직 공부가 부족한가보다.
mysql -u <유저명> -p
+ 비밀번호 입력CREATE DATABASE <DB이름>;
: 꼭 ;
까지 입력할 것, DB명은 문자, 숫자, 밑줄 및 일부 특수 문자로 제한되어있다고 한다.SHOW DATABASES;
: 현재 존재하는 DB 확인USE <DB이름>;
: DB 선택하기DESCRIBE <table이름>;
: table 구조 보기SELECT * FROM <table이름>;
: table 내용 보기위와 같이 확인이 가능하지만 너무 불편하다. vscode에 연결해서 확인해보자.
mysql
을 설치한다.Create Connection
을 누르고 MariaDB의 유저명과 비밀번호는 필수로 입력하자.Edit Connection
을 누르면 설정을 바꿀 수 있다.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