전체 글 44

NodeJS 사용자 정보 조회 기능 구현

기능 순서사용자의 프로필 페이지에 들어가면 사용자 정보를 조회할 수 있다. 사용자의 정보라 함은 ( bio, profile, posts ) 등이 있다. 현재 구현 항목에서는 사용자 테이블의 기본 정보 조회만을 구현 Routerouter.get('/:userId', verifyTokenMiddleware, getUserProfile);사용자 프로필 조회 시에는 로그인 상태여야 가능하기 때문에 토큰을 확인 해주는 미들웨어 추가  Controller// 사용자 프로필 조회// @route get /users/:userId// @header Authorization Bearer tokenexport const getUserProfile = async (req: Request, res: Response) => {..

Team_Mate/Backend 2024.12.22

Service에서의 에러 핸들링 방법

// 사용자가 입력한 회원가입 정보가 유효한지 확인하는 함수interface ValidSignUpInput { username: string; email: string; password: string;}export const validSignUpInput = (validProps: ValidSignUpInput) => { if (!validProps.username || !validProps.email || !validProps.password) { throw new Error('Username and email are required'); } return;}// 사용자 회원가입 함수interface SignUpProps { username: string; email: string; ..

Team_Mate/Backend 2024.12.22

NodeJS 로그아웃 기능 구현

기능 순서 사용자가 로그인을 하면 Token 테이블에 Token을 저장한다만약 이전에 로그인 했었던 기록이 있다면 해당 행(Row) 는 삭제하며 새로운 Token으로 행을 추가한다 사용자가 보내는 모든 요청에는 토큰을 검증하는 미들웨어로 올바른 토큰인지 ( 인증 / 인가 ) 확인사용자가 로그인 이후 1시간이 지나 토큰이 만료 되었다면 미들웨어에서 특정 행을 삭제하여 새롭게 로그인을 하도록 유도 로그아웃 시에는 토큰을 저장했었던 행을 삭제하여서 사용자가 특정 토큰으로 서버에 요청을 보낼 수 없도록 수정 예외토큰이 없는 상태로 요청을 보낸다면 ? [ OK ]토큰이 있지만 해당 토큰이 토큰 테이블에 없다면 ? [ OK ]토큰이 있고 토큰이 테이블에도 있지만 만료 되었다면 ? [ OK ]두 명의 사용자가 하나의..

Team_Mate/Backend 2024.12.20

NodeJS 회원가입 기능 구현

테이블 정의 및 데이터베이스 설계## 사용자 관리 테이블 설정- [x] **사용자 테이블 (Users)**: 사용자의 기본 정보와 계정 관리를 위한 테이블을 생성합니다. - `id`, `email`, `password`, `username`, `profile`, `bio`, `role`, `created_at`, `updated_at` 필드 추가import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm';export interface UserModel { id: number; username: string; email: string; password: string; bio: ..

Team_Mate/Backend 2024.12.20

DBdiagram.io 데이터베이스 ERD 툴

https://dbdiagram.io/homeDBdiagram.io를 선택한 이유웹 애플리케이션을 개발하면서 데이터베이스 설계는 중요한 과정 중 하나인데 특히 프로젝트 규모가 커지고, 여러 사람과 협업을 해야 할 때, 데이터베이스 설계를 명확히 하고 팀원들과 그 내용을 공유하는 것이 필수적임 이 때, DBdiagram.io와 같은 도구가 있다는 것을 알게 되어서 이번 프로젝트에선 해당 도구를 사용하기로 결정함 1. 시각화로 명확한 설계 제공첫 번째 이유는 DBdiagram.io가 제공하는 시각적 설계 덕분임. 데이터베이스 테이블과 관계를 다이어그램 형식으로 시각화하는 것은 설계를 직관적으로 이해하는 데 큰 도움이 됨. SQL 쿼리나 텍스트 기반 ERD(Entity-Relationship Diagram)만..

Team_Mate/Scheme 2024.12.19

Postgresql TypeORM으로 마이그레이션 하기

마이그레이션 이유TypeORM은 TypeScript와 완벽하게 호환되어, TypeScript의 장점을 온전히 누릴 수 있다고 공식 문서에 적혀있다...  개발자가 데이터베이스와의 연결을 관리하는 데 필요한 노력을 줄여주는데 SQL 쿼리를 작성하는 대신, TypeORM의 메서드를 사용하면 데이터베이스를 조작할 수 있다. 또한, TypeORM은 자동으로 SQL을 생성하므로, 복잡한 쿼리 작성의 부담을 덜어주며, 개발 속도를 크게 향상 시켜주기 때문에 TypeORM을 적용하려고 하고 있다.TypeORM을 기존 코드에 적용하려면 데이터베이스 연결 설정 및 엔티티 정의를 추가해야 합니다.# 패키지 설치npm install typeorm reflect-metadata pgTypeORM 설정TypeORM의 데이터 소..

Nodejs 2024.12.19

백엔드 작업 순서

대략적인 작업 순서 [ 백엔드 ]## 백엔드 구현 순서- [ ] **기본 환경 설정** - 프로젝트 초기화 (NestJS 설정, 필요한 라이브러리 설치) - 데이터베이스 설계 (예: PostgreSQL, MongoDB 등) - [] 사용자 테이블 - 게시글 테이블 - 댓글 테이블 - 태그 테이블- [ ] **사용자 관리 기능** - [ ] 회원 가입/로그인 API: 이메일 인증, JWT를 이용한 세션 관리 - [ ] 프로필 관리 API: 사용자 정보 수정, 비밀번호 변경 - [ ] 소셜 로그인 API: OAuth2 (Google, GitHub 등)- [ ] **콘텐츠 관리 (글 작성 및 수정)** - [ ] 글 작성/편집 API: 글의 제목, 본문, 태그, 카테고리 등 저..

Team_Mate/Scheme 2024.12.19