2024/12 21

NodeJS 사용자 정보 수정 기능 구현

기능 순서사용자는 프로필 페이지에서 정보 수정 버튼을 통해 현재 정보를 다른 정보로 바꿀 수 있다.어떤 사용자가 어떤 요청을 보냈는 지 식별하기 위해서는 요칭 시에 Header로 보내는 JWT token을 통해 사용자 인증 과정을 거친다Route// 사용자 정보 수정 시에 프로필 이미지도 변경이 가능 하기에 multy middleware 추가router.patch('/', uploadImage.single('profile'), verifyTokenMiddleware, updateUserProfile);Controller// 사용자 프로필 수정// @route patch /users// @header Authorization Bearer tokenexport const updateUserProfile = ..

Nodejs 2024.12.31

rocky9 - Docker 설치하기

기존에 설치했었던 Docker 제거 sudo dnf remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine필수 패키지 설치sudo dnf install -y yum-utils device-mapper-persistent-data lvm2Docker 공식 저장소 추가sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoDocker Engine 설치 sudo dnf install -y docker-ce docker-ce-cl..

Docker 2024.12.30

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) => {..

Nodejs 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; ..

Nodejs 2024.12.22

NodeJS 로그아웃 기능 구현

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

Nodejs 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: ..

Nodejs 2024.12.20

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

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

Nodejs 2024.12.19