전체 글
-
GitHub PR(Pull-Request) TemplateGithub 2022. 4. 8. 00:34
회사에서 작은 기능 단위 별로, PR 템플릿을 사용해서 PR을 진행하고 있는데, 그에 대한 이유가 궁금해서 조사한 내용을 정리해봤습니다. PR(Pull Request) 이란 PR 은 GitHub Repository 에 있는 Branch 에 푸시한 변경사항을 팀원들에게 알릴 수 있는 기능입니다. 이를 통해 많은 기업들과 사람들이 개발 프로세스에 대한 문서역할과 기능의 변경사항을 함께 논의하고 검토할 수 있습니다. 또한 PR 을 통해 미래의 다른 팀원, 개발자들에게 변경된 코드에 대한 기록을 남길 수 있습니다. 그렇다면 왜 좋은 PR 을 작성해야 할까? 좋고 깔끔한 PR 을 작성함으로써 다른 사람이 코드가 아닌 작성된 PR 내용을 통해 변경되거나 추가된 이유를 확인할 수 있고, 어떻게 문제를 해결했고, 특정..
-
[Prisma] - 중복되는 로우 쿼리 재사용하기ORM/Prisma 2022. 3. 28. 19:01
Prisma 에서 Raw Query 를 사용할 때 공통되는 부분이 생기기 마련입니다. 예를 들어 아래와 같은 2개의 쿼리를 사용하고 있다고 가정을 해봅시다. this.prismaService.$queryRaw`select * from User where id = ${userId};`; this.prismaService.$queryRaw`select * from User where age < ${maxAge};`; select * from User 쿼리가 현재 공통으로 사용되고 있습니다. 만약 select * from User 을 문자열로 만들어서 추가해주면 어떻게 될까요? const selectQuery: string = 'select * from User'; this.prismaService.$quer..
-
[Typescript] - 배열 내에서 undefined 제거하기Language/Typescript 2022. 3. 28. 01:37
const arr: (string | undefined)[] = ['test1', 'test2', undefined, 'test3', 'test4']; 위와 같은 배열에서 undefined 를 제거하기 위해서는 filter() 메서드를 사용하는 방법이 있습니다. const arr: (string | undefined)[] = ['test1', 'test2', undefined, 'test3', 'test4']; const filter_undefined_arr = arr.filter((data) => data !== undefined); // ['test1', 'test2', 'test3', 'test4'] 결과는 undefined type 이 제거된 배열이 return 되는 것을 확인할 수 있습니다. 하..
-
NestJS - Query String 배열(Array)로 처리하기Framework/NestJS 2022. 2. 14. 23:29
NestJS : Query String 배열로 처리하기 endPoint /test?queryData=asdasd&queryData=bbbbefe ... controller @Get('/test') queryStringArrayTest(@Query('queryData') queryData: string[]) { return queryData; } 우선 위 처럼 할 경우 query String 을 배열로 처리할 수 있습니다. Result [ "asdasd", "bbbbefe" ] endPoint 의 Query String 를 위와 같이 처리한다면 queryData 가 반복돼서 사용되고, 길어질 수록 보기 좋지 않을 수 있습니다. 하지만 class-validator, class-transformer 라이브러리..
-
[Javascript] - Promise AllLanguage/Javascript 2022. 1. 28. 00:19
async/await Promise All Promise All 순서와 무관한 여러 개의 비동기 처리를 병렬로 처리하기 위해 사용하는 기능입니다. 예를 들면, 하나의 상품 키 값을 가지고 "상품을 조회하고, 그 상품에 대한 리뷰들을 조회" 하는 경우입니다. 덧셈, 뺄셈, 나눗셈 3 개의 비동기 처리를 하는 예제로 진행했습니다. Example 개별로 처리 const calcPlus = async (a, b) => { return a + b; } const calcMinus = async (a, b) => { return a - b; } const calcDivide = async (a, b) => { return a / b; } const promiseAllTest = async () => { const ..
-
[Javscript] map 과 forEach 의 차이점Language/Javascript 2022. 1. 19. 22:51
map 과 forEach 의 차이점 forEach 와 map 은 배열의 요소들을 함수에 넣고 실행하는 과정은 같지만, map 은 그 결과에 return 값이 있지만, forEach 는 return 을 보내지 않습니다. for 문을 통해서도 충분히 해결 가능하지만 이러한 map 이나 forEach 와 같은 선언적 프로그래밍 스타일은 표현력이 뛰어나고 작성하기 쉽고 훨씬 읽기 쉽습니다. 많은 이유로 좋지만 성능이 중요한 경우에는 그렇지 못합니다. for 문은 일반적으로 선언적 루프보다 3배 이상 빠르다고 합니다. 대부분의 응용 프로그램에서 큰 차이를 보이지는 않지만, 비디오 처리, 과학 계산 또는 게임 엔진에서 대량의 데이터 처리에서는 전체 성능에 큰 영향을 미칩니다. 위의 경우가 아니면 대부분은 단순한 선..
-
Prisma - RelationORM/Prisma 2021. 12. 29. 19:41
Prisma Relation Prisma 는 RDB 기반의 여러 DBMS(PostgreSQL, MySQL, MariaDB...) 를 지원합니다. RDB 에서 관계는 핵심이며 이를 통해서 무결성을 보장하고, join 을 통해 우리가 원하는 데이터를 테이블 별로 가져올 수 있습니다. 우리가 정의한 model 을 통해서 실제 DB 스키마를 생성합니다. Prisma 에서는 3가지의 방법으로 모델을 정의할 수 있습니다. 1 : 1 : 남편과 부인의 관계, 남편은 2명 이상의 부인을 둘 수 없다. 1 : N : 부모와 자식의 관계, 부모는 1명 이상의 자식들을 가질 수 있다. N : M : 학원과 학생의 관계, 학원에는 여러 학생이 수강할 수 있고 학생도 여러개의 학원을 수강할 수 있다. 관계는 Prisma 스키마..
-
NestJS, Prisma - CRUDORM/Prisma 2021. 12. 26. 22:44
Prisma, Mysql 시작하기 Prisma 란? 공식 홈페이지 에서 확인해보면 차세대 오픈 소스 ORM 으로 아래와 같은 구성으로 이뤄져있다고 합니다. Prisma Client : NodeJS 와 TypeScript 전용 Type Safe 및 자동 생성 쿼리빌더 Prisma Migrate : Migration system, 데이터 모델링 Prisma Studio : GUI 를 통해 DB 를 수정할 수 있는 기능 Prisma Client 는 모든 NodeJS 또는 Typescript 백엔드 어플리케이션에서 사용이 가능하다고 합니다. 그리고 PostgreSQL, MySQL, MariaDB, SQLite 등의 데이터베이스를 지원합니다. 왜 Prisma 를 사용할까? Prisma 의 주요 목적은 데이터베이스..