목록개발 (301)
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/d9t25N/btrYlvtSr4x/bkT88xpqfw9DNg9N41wzb0/img.png)
미래의 나에게 검증을 하기 위한 두 라이브러리 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..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/VNdEG/btrX7ZWvU3A/2SCmTX4wyXEErtUrYFfyvk/img.png)
간단한 쿼리문 사용법 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..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/8C1zf/btrYaqlMIi5/bgIx9PBYFcfuu6CmWARox0/img.png)
암호화 암호화란, DB 정보를 해독할 수 없도록 정보를 비밀 코드로 변환하는 과정을 의미한다. 기본적으로 알고리즘을 사용하여 데이터를 변환하게 되며, 변환된 데이터는 해독키를 갖지 않으면 정보에 접근할 수 없기에 해킹에 보다 안전한 방법이라고 말할 수 있다. 단방향 양방향 (비대칭형 / 대칭형) 단방향 암호화 단방향 암호화는 복호화할 수 없는 암호화 방법이라고 말할 수 있으며, 이 경우 한번 암호화를 했다면 다시 복호화할 수 없다는 특징을 가진다. (복호화 가능한 것은 양방향 암호화) ** 복호화는 암호화(변환)된 데이터를 이전의 데이터로 되돌려 놓는 것을 말한다. 암호화 방식으로는 Hash 함수를 활용한 Hash 암호화를 주로 사용하는데, Hash 함수는 임의의 길이의 데이터를 고정된 길이의 데이터로 ..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/lNjYk/btrX2p9GNWM/EXa8XifMZj3keofC3BkWek/img.png)
오늘은 저번에 업로드한 ERD를 기준으로 MySQL에 엔티티를 적용해보았다. // 상품 / product.entity.ts @Entity() // 엔티티 임을 선언 export class Product { @PrimaryGeneratedColumn('uuid') // uuid 를 통해 id 생성 id: string; @Column() product_Name: string; // 중략 // } 엔티티 작성은 다음과 같다. 데코레이션을 통해 Entity 를 선언하고, PrimaryGeneratedColumn 을 통해 PK임을 선언함과 동시에 임의의 id 를 만드는 uuid 를 생성한다. 그리고 그 아래로 콜론 값으로 들어오는 엔티티를 각 타입에 맞추어 작성해준다. 관계 작성 다음은 관계 작성에 대해 다룬다...
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/sSCU3/btrX16WNRic/TuAflACsouslDmA17NUTaK/img.png)
집계 쿼리 집계 쿼리란 그 이름처럼 산술로써 집계하는 쿼리다. count : 행들의 갯수를 구하기 위해 사용 sum : 행들의 평균을 구하기 위해 사용 avg : 행들의 평균을 구하기 위해 사용 max : 행들의 최댓값을 구하기 위해 사용 -- 예시 집계 쿼리 -- 치킨집에 치킨이 몇 마리있는지 출력 select count as 치킨수 from 치킨집 -- where 을 통해 조건을 둘 수도 있다 -- 서울에 있는 치킨집 치킨이 몇 마리있는지 출력 select count as 치킨수 from 치킨집 where 지역 = 서울 -- 매출액 평균 select avg as 평균 from 매출액 정렬 쿼리 정렬을 위한 쿼리다. select 로 데이터를 조회할 때, order by '기준점' 을 통해 정렬이 가능하..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/ubLj6/btrX3ZI8EUa/YQCbvRgMjdJyvycKl9wUr0/img.png)
Login process 로그인 프로세스란 그 말마따나 로그인 과정을 의미한다. 당연하게도 로그인은 사용자의 개인정보를 다루기에 사용자의 아이디, 비밀번호 입력 / 백엔드의 인가와 인증을 거쳐 진행하게 된다. 로그인 과정을 거친 뒤, 사용자에게 권한을 부여하는 과정을 로그인 프로세스라고 말할 수 있다. Login process 과정 1. 사용자가 아이디 & 비밀번호 입력 2. NestJS에서 사용자 입력값과 DB 값 비교 3. DB에서 저장된 유저인지 아닌지 파악 후 반환 4. 유저일 시 Access token & Refresh token 반환 / false 반환
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bWKtDT/btrXXyRZe4f/KVkSFhCE7qRhkxg1hiKHw1/img.png)
이번 포스팅은 지난 JWT 관련 포스팅과 이어지는 포스팅임을 밝힌다. 2023.01.30 - [코딩/알쓸코잡] - JWT (JSON Web Token) Cookie Cookie(=쿠키) 는 사실 프로그래머 공부를 하지 않았어도, 인터넷을 이용하는 사용자에게는 꽤 익숙하면서도 굳이 보고싶지 않은 이름이다. 프로그래머 공부를 하기 전 나 역시도 마찬가지였다. 오늘은 쿠키에 대해서 다뤄보는 시간을 가져본다. 쿠키는 사이트가 사용하고 있는 서버를 통해 클라이언트의 브라우저에 설치되는 정보 파일로, {key : value} 형식의 문자열의 형태를 띄며, 각 사용자의 고유 정보 식별을 하는 역할을 갖는다. 그런 이유로 클라이언트가 대략적인 정보를 가지고 있기 때문에, 이미 접속했던 사이트에서는 보다 빠르게 접속이 ..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/kw7YU/btrXHCPEycv/zZ6IOgNToGpkmXr94ZWjOk/img.png)
오늘은 어제 과제로 진행했던 내용을 복기해본다. NestJS와 docker 내 MySQL 과의 연동 dto / entity / interface 작성 API 틀 작성 NestJS와 docker 내 MySQL 과의 연동 Docker 를 통해 MongoDB 와 연동을 했던 기억이 있어서 그리 어렵진 않았다. MySQL 을 이용할 것이기 때문에, docker Database 이미지를 mysql 가장 최근 버전으로 설정해주고, MySQL 부팅 시 필요한 데이터 베이스 이름 / 비밀번호를 입력해준다. * mongoDB 가 포트번호를 27017 을 사용했던 것처럼, MySQL 포트번호인 3306 을 입력해준다. 추가적으로 환경변수로 모아놨던 데이터들을 MySQL을 다루기 위한 TypeORM 에 아래와 같이 작성해주..