웹 풀스택코스 프로그래머스 5기 최종 회고
·
BE
사실 풀스택 프로그래머스를 지원하기 전까지 저는 “프로젝트 고도화”에 굉장히 목을 매던 사람이었습니다.채용시장에 쏟아져 나올 수많은 프로젝트와 스터디가 말도 안 되게 많을걸 알기에 다른 프로젝트와 차별화를 두고 싶었고 그만큼 의미가 있었다는 걸 어필하고 싶었습니다.그러나 언제까지 고도화만 붙들고 있을 순 없었기에 개발자로서 다양한 경험을 택했고 부족하지만 채용시장에 과감히 뛰어들었습니다!(풀스택을 지원하며 저는 다른 누군가의 관점에서 프론트엔드를 바라보고 싶었습니다.하지만 채용시장은 아직 겨울이군요..🥶 더 열심히 해야겠습니다….) 글을 시작하며 …프로그래머스에서 풀스택 활동의 계기는 ‘백엔드 관점에서 같이 일하고 싶은 프론트엔드는 어떤 사람일까?’ 질문에서 시작했습니다. 사실 End-To-End 프로..
useActionState Hook을 활용하여 회원가입 폼 만들기
·
FE
글을 시작하며리액트 공식문서를 끝까지 읽으며 공부한 적이 없는 것 같아서 더 깊이 있게 공부하고자 공식문서를 공부하게 되었습니다. 학부생으로서 막학기를 지내며 이력서, 포트폴리오, 코딩테스트 등등 할 일이 많지만 차근차근 학습해 나가도록 하겠습니다!이번 시간에는 useActionState를 공부하며 직접 코드로 구현해보는 시간을 가져보려고 합니다.useActionState란React 19버전에 도입되었으며, 폼 액션의 결과를 기반으로 state를 업데이트할 수 있도록 제공하는 Hook입니다.이전 버전에서는 비동기 작업의 상태를 추적하기 위해 여러 개의 useState를 사용해 각각의 상태를 따로 관리해야 했습니다.하지만 useActionState를 사용하면, 별도의 상태 훅 없이도 form 액션의 결과와..
N+1 문제
·
BE
N+1 문제란?N+1 문제란 1번의 쿼리를 사용해서 N개의 데이터를 가져올 때, 해당 데이터와 관련된 모든 데이터를 가져오기 위해 추가적으로 N번의 쿼리가 실행되는 문제를 말합니다. 이를 이해하기 위해서 먼저 로딩 방식에 대해 알고 있어야 하므로 프로젝트에서 사용한 코드와 함께 로딩방식을 정리한 후 N+1문제에 대해 정리하겠습니다.예시코드user테이블과 comments 테이블의 관계는 1:N이고 이를 NestJS에서 TypeORM을 사용했을 때, 다음과 같이 나타낼 수 있습니다.@Entity('users')export class User { @PrimaryColumn({ type: 'int' }) id: number; @Column({ unique: true }) social_id: string;..
공공 화장실 정보 제공 서비스(급똥) 프로젝트 중간 회고
·
BE
프로젝트 소개프로젝트 인원 4명 (프론트엔드 2명, 백엔드 2명)프로젝트 : 사용자 위치기반 공공 화장실 정보 제공 서비스Github: https://github.com/GeubDDong기술 스택Frontend: Vite, React, Typescript, Styled-Components, React-Query, Zustand, VercelBackend: NestJS, Typescript, TypeORM, Swagger, Nginx, JWT, RDS, PostgreSQL, RedisDevOps: Docker, Docker Comopose, EC2, Amazon Route53, Github Actions나의 역할ERD백엔드 API 개발CI / CD 자동화README 문서화기억에 남는 구현[ 가장 가까운 화..
TypeORM에서의 @DeletedDateColumn를 활용한 Soft Delete 관련 트러블슈팅
·
BE
문제 상황이전에 생성한 엔티티를 바탕으로 Repository Pattern을 구현할 때 생겨난 문제입니다.(Repository Pattern은 우리가 entity를 통해 만들어준 테이블의 값 들이 어떠한 일련의 과정을 통해 서비스에서 접근 가능하게끔 해야 하는데 그때 repository가 매개체로서 이 과정을 수행한다. 즉, repository에서 entity로 정의해 놓은 DB의 값을 받고, service에 주입시켜 준다고 생각하면 이해하기 편합니다.)제가 생성한 엔티티는 다음과 같습니다.//order.entity.ts 일부 @CreateDateColumn({ type: 'datetime' }) created_at: Date; @UpdateDateColumn({ type: 'datetime' }..
좋은 피자 위대한 피자 (2) (Type ORM 적용하여 entity 설정하기)
·
BE
안녕하세요 반갑습니다.오늘은erd 변경사항과 수정 이유typeORM 소개 및 적용DB 관계 정의하기에 대해 알아보겠습니다.1. 같은 테이블을 바라보기 때문에 중복된 컬럼을 삭제했습니다.기존의 연결테이블입니다. 여기서 script_id는 food_id와 동일한 주문 테이블을 바라보기 때문에 food_id와 ingredient_id 를 order_id로 수정하여 컬럼이 중복되는 것을 방지하고자 수정했습니다. 수정한 테이블로 typeorm을 적용해보겠습니다. 2. TypeORM(Object Relational Mapping)이란?객체와 관계형 데이터베이스의 데이터를 자동으로 변형 및 연결하는 작업입니다.ORM을 이용한 개발은 객체와 데이터베이스의 변형에 유연하게 사용할 수 있기 때문에 이번 프로젝트에 도입하기..