목록개발 (301)
미래의 나에게 검증을 하기 위한 두 라이브러리 yarn add class-validator yarn add class-transformer 오늘은 오늘 과제였던 CRU API 구현 / TypeORM 에 대해 리뷰한다. DTO / interface 먼저 본격적인 API 구현에 앞서, 이전과 같이 dto 와 Interface 를 작성한다. ( create 를 위한 dto / update 를 위한 dto) 워낙 불려다니는 곳이 많은 친구들이라 먼저 작성해두는 것이 마음 편하다. // dto/create-product.input.ts import { Field, InputType, Int } from '@nestjs/graphql'; import { Min } from 'class-validator'; @Inp..
간단한 쿼리문 사용법 1. Select / 데이터를 보기 위한 쿼리문 -- 테이블 내 모든 내용 보기 select * from 테이블 명 -- 원하는 열만 보기 select 칼럼1, 칼럼2 from 테이블 명 -- 원하는 조건의 행만 보기 / where select * from 테이블 명 where 원하는 조건 -- 원하는 순서로 정렬하기 / order by select * from 테이블 명 order by 정렬 기준 칼럼 -- 원하는 순서로 정렬하기 / order by / asc / desc select * from 테이블 order by 칼럼1 asc, 칼럼2 desc -- 이때, 칼럼1이 오름차순으로 정렬된 뒤, 칼럼2에 대한 내림차순 정렬 실행 -- 원하는 만큼 데이터 보기 // limit se..
암호화 암호화란, DB 정보를 해독할 수 없도록 정보를 비밀 코드로 변환하는 과정을 의미한다. 기본적으로 알고리즘을 사용하여 데이터를 변환하게 되며, 변환된 데이터는 해독키를 갖지 않으면 정보에 접근할 수 없기에 해킹에 보다 안전한 방법이라고 말할 수 있다. 단방향 양방향 (비대칭형 / 대칭형) 단방향 암호화 단방향 암호화는 복호화할 수 없는 암호화 방법이라고 말할 수 있으며, 이 경우 한번 암호화를 했다면 다시 복호화할 수 없다는 특징을 가진다. (복호화 가능한 것은 양방향 암호화) ** 복호화는 암호화(변환)된 데이터를 이전의 데이터로 되돌려 놓는 것을 말한다. 암호화 방식으로는 Hash 함수를 활용한 Hash 암호화를 주로 사용하는데, Hash 함수는 임의의 길이의 데이터를 고정된 길이의 데이터로 ..
오늘은 저번에 업로드한 ERD를 기준으로 MySQL에 엔티티를 적용해보았다. // 상품 / product.entity.ts @Entity() // 엔티티 임을 선언 export class Product { @PrimaryGeneratedColumn('uuid') // uuid 를 통해 id 생성 id: string; @Column() product_Name: string; // 중략 // } 엔티티 작성은 다음과 같다. 데코레이션을 통해 Entity 를 선언하고, PrimaryGeneratedColumn 을 통해 PK임을 선언함과 동시에 임의의 id 를 만드는 uuid 를 생성한다. 그리고 그 아래로 콜론 값으로 들어오는 엔티티를 각 타입에 맞추어 작성해준다. 관계 작성 다음은 관계 작성에 대해 다룬다...
집계 쿼리 집계 쿼리란 그 이름처럼 산술로써 집계하는 쿼리다. count : 행들의 갯수를 구하기 위해 사용 sum : 행들의 평균을 구하기 위해 사용 avg : 행들의 평균을 구하기 위해 사용 max : 행들의 최댓값을 구하기 위해 사용 -- 예시 집계 쿼리 -- 치킨집에 치킨이 몇 마리있는지 출력 select count as 치킨수 from 치킨집 -- where 을 통해 조건을 둘 수도 있다 -- 서울에 있는 치킨집 치킨이 몇 마리있는지 출력 select count as 치킨수 from 치킨집 where 지역 = 서울 -- 매출액 평균 select avg as 평균 from 매출액 정렬 쿼리 정렬을 위한 쿼리다. select 로 데이터를 조회할 때, order by '기준점' 을 통해 정렬이 가능하..
Login process 로그인 프로세스란 그 말마따나 로그인 과정을 의미한다. 당연하게도 로그인은 사용자의 개인정보를 다루기에 사용자의 아이디, 비밀번호 입력 / 백엔드의 인가와 인증을 거쳐 진행하게 된다. 로그인 과정을 거친 뒤, 사용자에게 권한을 부여하는 과정을 로그인 프로세스라고 말할 수 있다. Login process 과정 1. 사용자가 아이디 & 비밀번호 입력 2. NestJS에서 사용자 입력값과 DB 값 비교 3. DB에서 저장된 유저인지 아닌지 파악 후 반환 4. 유저일 시 Access token & Refresh token 반환 / false 반환
이번 포스팅은 지난 JWT 관련 포스팅과 이어지는 포스팅임을 밝힌다. 2023.01.30 - [코딩/알쓸코잡] - JWT (JSON Web Token) Cookie Cookie(=쿠키) 는 사실 프로그래머 공부를 하지 않았어도, 인터넷을 이용하는 사용자에게는 꽤 익숙하면서도 굳이 보고싶지 않은 이름이다. 프로그래머 공부를 하기 전 나 역시도 마찬가지였다. 오늘은 쿠키에 대해서 다뤄보는 시간을 가져본다. 쿠키는 사이트가 사용하고 있는 서버를 통해 클라이언트의 브라우저에 설치되는 정보 파일로, {key : value} 형식의 문자열의 형태를 띄며, 각 사용자의 고유 정보 식별을 하는 역할을 갖는다. 그런 이유로 클라이언트가 대략적인 정보를 가지고 있기 때문에, 이미 접속했던 사이트에서는 보다 빠르게 접속이 ..
오늘은 어제 과제로 진행했던 내용을 복기해본다. NestJS와 docker 내 MySQL 과의 연동 dto / entity / interface 작성 API 틀 작성 NestJS와 docker 내 MySQL 과의 연동 Docker 를 통해 MongoDB 와 연동을 했던 기억이 있어서 그리 어렵진 않았다. MySQL 을 이용할 것이기 때문에, docker Database 이미지를 mysql 가장 최근 버전으로 설정해주고, MySQL 부팅 시 필요한 데이터 베이스 이름 / 비밀번호를 입력해준다. * mongoDB 가 포트번호를 27017 을 사용했던 것처럼, MySQL 포트번호인 3306 을 입력해준다. 추가적으로 환경변수로 모아놨던 데이터들을 MySQL을 다루기 위한 TypeORM 에 아래와 같이 작성해주..