목록전체 글 (305)
집계 쿼리 집계 쿼리란 그 이름처럼 산술로써 집계하는 쿼리다. 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 에 아래와 같이 작성해주..
Generic 제네릭을 사용하면 다양한 방식으로 자신만의 타입을 사용할 수 있다. 제네릭은 Type 을 함수의 파라미터처럼 사용할 수 있는 것을 의미하는데, 기본 타입과 Generic 을 적용한 타입을 비교해보고자 한다. 기본 타입 문자 / 숫자 / 불리언 || any || unknown // 1. 문자/숫자/불린 기본 타입 const getPrimitive = (arg1: string, arg2: number, arg3: boolean): [boolean, number, string] => { return [arg3, arg2, arg1]; // type 으로 정해놓은 값만 반환이 가능하다. }; const result = getPrimitive("철수", 123, true); // // // 2. a..
린터와 포멧터 적용 이유 혼자하는 개발이라면 상관 없지만, 대부분의 개발은 타 개발자와 협업을 통해 진행하게 된다. 허나 각기 코드를 작성하는 방식이나 습관들이 다르기 때문에, 통일성이 떨어질 뿐더러 읽는데도 시간이 오래걸릴 수밖에 없게 된다. 이를 해결하기 위해 등장한 것이 린터와 포멧터. 그리고 린터 중에서는 eslint , 포멧터 중에서는 prettier가 대표적이라 이 둘은 NestJS에도 포함되어 있다. 린터 eslint 는 수많은 린터 중에 하나로, 코드 작성 규칙을 설정할 수 있는 기능을 제공해준다. 예를 들어, import 순서 / 느슨한 동등 연산자 '==' 금지 등이 설정 가능하다. 간단히 얘기하면, 린터는 일관성 있는 코드의 퀄리티를 보장하는 것을 돕는다고 볼 수 있다. eslint ..
포스팅을 읽기 전 읽어보면 좋을 포스팅 2023.02.02 - [코딩/알쓸코잡] - Cookie / Local storage & Session storage JWT (JSON Web Token) JWT 는 유저를 인증 / 식별하기 위한 토큰 기반의 인증이라고 볼 수 있다. JWT 는 토큰 자체에 [사용자의 권한 정보 / 서비스를 사용하기 위한 정보] 가 포함되어 있는데, 이 JWT 는 서버가 아닌 '클라이언트'에게 저장되기 때문에 서버의 부담을 덜 수 있다는 장점을 가진다. JWT 을 쓰는 이유 JWT을 사용하는 이유는 두 이유가 있다. (서버 기반 인증의 문제점 & JWT의 장점) 서버 기반 인증 방식의 문제점 세션 : 세션이란, 유저가 인증을 할 때 해당 인증에 대한 정보들을 서버가 가지고 있는 것을..