개발 48

언젠가 사용하게 될 Prisma ORM 옵션 종류 및 설명 (1)

1. distinct - 중복 제거 const uniquePostTitles = await prisma.post.findMany({ distinct: ['title'], }); distinct에 중복 제거를 적용하고싶은 컬럼명을 작성하면 된다. [ { Id: 1, title: 'abc', }, { Id: 2, title: 'efg', }, { Id: 3, title: 'abc', }, { Id: 4, title: 'efg', }, ] 위와 같은 데이터에 사용할 경우 [ { Id: 1, title: 'abc', }, { Id: 2, title: 'efg', } ] 이처럼 중복된 필드값을 가지고 있는 데이터들은 그 중 더 낮은 id값을 가지고 있는 데이터 한개만 표시된다. 2. cursor - 리스트를 특정..

개발/PrismaORM 2023.07.31

소셜로그인 구현 시 작동 순서 및 과정

1. 유저가 소셜로그인 버튼을 누르고 ID, PW 입력 2. 해당 소셜에서, 유저가 입력한 ID와 PW가 올바른지 확인 3. 올바른 로그인 정보일시 소셜에서 브라우저로 시크릿 코드를 전송 4. 브라우저는 소셜에게 받은 시크릿 코드를 백엔드로 전달 5. 백엔드는 브라우저에게 받은 시크릿 코드를 소셜로 다시 전송 (로그인 요청한 유저와 동일한지 확인 과정) 6. 소셜에서 백엔드에게 받은 시크릿 코드와 브라우저에게 전송했던 시크릿 코드가 일치하는지 확인 7. 일치 시 소셜에서 백엔드로 해당 유저의 AccessToken과 프로필을 전송 8. 백엔드는 소셜에서 받은 유저의 프로필이 db에 없으면 회원가입을 진행하고, 있으면 로그인 처리

개발/JavaScript 2023.06.07

Prisma Transaction이란?, $transaction 사용 방법

트랜잭션이 대체 뭘까!!!! 그게 뭐냐면~ 데이터베이스에 대한 작업이 여러개 일 때 그 작업들을 하나로 묶어줌 (like... 파워포인트에서 그룹화 같은 역할...) 여러개의 작업이 한개의 로직을 구성하고 있을때 사용할 수 있음~! 묶여진 모든 작업들이 성공적으로 실행을 마쳐야만 데이터베이스에 저장됨 한 작업이라도 실패를 하거나 중간에 오류가 발생하면 묶여진 데이터 내에서 이전에 했던 작업들을 다시 원상복구~ 예를들면 transaction(계란후라이 만들기) { 1. 가스레인지 불 켜고, db에 불켜기 true로 체크하기 2. 프라이팬에 기름 두르고, db에 기름 두르기 true로 체크하기 3. 냉장고에서 계란 꺼내고, 남은 계란 갯수 db에 update하기 4. 프라이팬에 계란 올리고, 완성까지 걸린 ..

개발/PrismaORM 2023.06.01

자주 사용되는 HTTP 상태코드(statusCode) 종류와 의미

- 200: 요청이 성공적으로 처리됨 - 201: 요청이 성공적으로 처리되었고 새로운 리소스가 생성됨 - 400: 서버가 요청을 이해하지 못했거나 잘못 된 요청임 - 401: 클라이언트가 인증되지 않았거나 유요한 인증 자격이 없음 - 403: 서버에 의해 요청이 거부됨 클라이언트가 리소스에 접근 할 권한이 없음 - 404: 요청한 리소스가 서버에서 찾을 수 없음 - 407: 클라이언트가 프록시 서버를 통해 요청을 보내기 위해 인증이 필요함 - 500: 서버에서 발생한 내부 오류

개발/HTTP 2023.05.26

스프레드 연산자와 나머지 연산자

둘 다 '...'을 사용해 비슷하게 생겼다. - 스프레드 연산자: 배열이나 객체를 펼쳐서 전개함 객체를 복사하거나 새로운 배열 및 객체 생성 시 유용하게 사용됨 const arr1 = [1, 2, 3]; //얘네 const arr2 = [4, 5, 6]; //둘을... const mergedArr = [...arr1, ...arr2]; //개별로 분리한 후 하나의 배열로 합치기~! console.log(mergedArr); // 출력: [1, 2, 3, 4, 5, 6] - 나머지 연산자: 나머지 값들을 모아서 배열로 만듦 함수에 파라미터에서 사용되며 함수에 전달된 인자들 중에서 명시된 파라미터로 할당하지 않은 나머지 인자들을 배열 형태로 받아옴 function foo(a, b, ...rest) { //a..

개발/JavaScript 2023.04.14

'초기화' 란?

일상생활에서 초기화 하다 라는 말은 아예 싹 없애버린다(?)라는 뜻으로 썼던 것 같은데 코딩을 배우면서 초기화라는 단어의 뜻이 내가 알던 뜻과 살짝 다르게 사용되고 있는 것 같아서 공부 겸... 헷갈림 방지를 위해 글을 작성하기로 했다. 초기화란? 일반적으로는 변수나 객체의 초기 상태를 지정해주는 것 이라는 뜻으로 쓰인다. 물론 상황마다 다른 뜻으로 쓰일 때도 있겠지만...! 변수나 객체가 초기화 되면 초기화 된(지정해준) 그 값부터 새롭게 시작하는거다. 이전에 어떤 값이 들어갔던지 상관 없이!

개발/JavaScript 2023.04.11

의존성 주입이란?

와 이거 간단한건데 왜 이해하기까지 오래걸렸는지 의문.. 의존성 주입이란 객체간의 의존관계를 느슨하게 하기 위한 설계 패턴임 즉 의존성을 최소화 하려고 하는것 (의존성 '주입'이라길래 의존성을 더 높이는것이라고 생각했었다;;) 의존성이 있을 때 다른 객체를 직접 생성해서 사용하지 않고 생성자를 통해 외부에서 객체를 생성하여 주입함 * NestJS에서 간단하게 할 수 있음! ex) (NestJS 환경에서 의존성 주입하기) AuthService 클래스 내부에서 UserService 클래스를 사용해야 할 때 import { Injectable } from '@nestjs/common'; import { UserService } from './user.service'; @Injectable() export cl..

개발/NestJS 2023.04.10