본문 바로가기

프로젝트21

유저 정보에 기반한 모임 추천 기능 만들기 //유저 테이블 model Users { id Int @id @default(autoincrement()) @map("id") email String @unique @map("email") password String @map("password") name String @map("name") interest String @map("interest") profileImage String? @map("profileImage") isVerified Boolean @default(false) @map("isVerified") postId Posts[] Likes Likes[] CommunityUsers CommunityUsers[] followers Follow[] @relation("UserFollowers".. 2024. 2. 13.
게시글 좋아요 기능 만들기 model Likes { id Int @id @default(autoincrement()) @map("id") userId Int @map("userId") postId Int @map("postId") users Users @relation(fields:[userId] , references: [id] , onDelete: Cascade) posts Posts @relation(fields:[postId] , references: [id] , onDelete: Cascade) @@map("Likes") } Likes 테이블의 스키마는 이렇다! userId 와 postId 를 가지고 있고, 로그인 한 유저가 해당 포스트에 "좋아요" 요청을 보내면 id에 저장이 된다. //좋아요 router.post('/.. 2024. 2. 13.
우리 동네 동아리(이하 우동) 프로젝트 프로젝트 이름 우리 동네 동아리(우동) 프로젝트 일정 24.02.07 ~24.02.13 프로젝트 기획 취미가 비슷한 사람들이 모여 동아리를 만들 수 있고, 등록한 내 취미에 따라 동아리 추천을 받을 수 있는 커뮤니티 사이트. 회원가입, 로그인 및 로그아웃 기능 프로필 수정 기능 게시물 CRUD 기능, 게시글 좋아요 기능 댓글 CRUD 기능 뉴스 피드 기능(각 모임별로 게시판을 표시) 이메일 가입 및 인증 기능 소셜 로그인 기능 구현(네이버, 카카오 등) 팔로우 기능 구현 HTTP를 HTTPS로 업그레이드 하기 와이어프레임 일정이 타이트한것을 감안하여 프론트는 프로젝트 이해를 위해서 사용했다고 봐주시면 좋을것 같습니다. ERD 다이어그램 Users : Posts 1 : N Community : Posts .. 2024. 2. 7.
카카오 로그인/로그아웃 기능 개발(REST API) 공식문서에 가면 튜토리얼이 잘 되어있지만 잘 모르겠어서 정~말 여기저기 도움을 많이 받은 기능.. ^^ 이다! 1. GET/ 카카오 인가코드받기 2. POST/ 인가코드 보내서 엑세스 토큰받기 3. GET/ 카카오 사용자 이름, 이메일 통해 데이터베이스(이번 플젝의 경우 prisma) 안에 정보 저장, 인증 쿠키 발행하기 간단하게 이런 단계로 구성되어있고, 하나하나 과정에 대해 설명해보려 한다. 카카오 로그인을 사용하기 위해 선행으로 kakao developers 로그인해서 내 애플리케이션 등록하기, redirect uri 등록하기 등 여러 절차가 있는데 그건 카카오 공식 홈페이지를 보고 따라해도 충분해서 생략한다. 인가코드 받기 카카오 로그인 동의 화면을 호출하고, 사용자 동의를 거쳐 인가코드를 발급한.. 2024. 2. 6.
Err#2 - 알면알수록 허무한 디버깅 과제를 제출하고 받은 피드백을 토대로 코드를 수정하던 중 기존에 잘 되던 코드가 갑자기 안되는 에러가 있었다. 오늘의 오류는 대략 이렇다... 1. 우선 jwt.sign 함수를 모듈화 하라는 피드백을 받고 이런식으로 따로 파일로 빼주었다. import jwt from "jsonwebtoken"; import dotenv from "dotenv"; dotenv.config(); export default function (n) { return jwt.sign({ userId: user.userId }, process.env.SESSION_SECRET_KEY, { expiresIn: n, }); } 2. jwt.sign을 쓰는 로그인 api도 수정했다. import JWT from "../utils/jwt... 2024. 2. 5.
AWS EC2 인스턴스에 프로젝트 배포하기, PM2 사용하기 AWS EC2 Instance 생성 1. EC2 서비스에서 인스턴스 시작 클릭 2. Ubuntu, Ubuntu Server 22.04 KTS(HVM), 64비트 선택 3. EC2 인스턴스 유형: 프리티어 사용가능이라 적혀있는 t2.micro 타입 선택 4. keypair 이름 지정 및 다운로드: 키페어유형 RSA, 프라이빗 키 파일 형식 .pem 인스턴스 보안그룹에 들어가 인바운드 규칙편집까지 같이 해주기 규칙추가 > 사용자 지정 TCP, 포트범위 지정(내 Node.js 서버 포트번호), 소스는 Anywhere-IPv4 네트워크 설정 - 퍼블릭 IP 자동할당 비활성화 ★ ★ ★ ★ ★ ★ AWS EC2 접속하기 Window의 경우 git bash라는 프로그램으로 접속 1. 리눅스 명령어 사용해 키페어가 .. 2024. 2. 2.
API 명세서, ERD 작성하기 기능 api url method request header request response response header 회원가입 /sign-up post { email password name age gender } { message: "회원가입을 축하드립니다."} 로그인 /sign-in post { email password } { message:"ㅇㅇ님 환영합니다!"} { “authorization”: “Bearer eyJhbGciOiJIUzI1NiIsIn…” } 사용자 조회 /users get { authorization: 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjEsImlhdCI6MTY5MTA1NTc5OH0.2bM9s-Vv312rgkR.. 2024. 2. 2.
Err#1 - PrismaClientValidationError queryString으로 order데이터를 받아 정렬방식을 결정하는 부분이 있었는데 내 스키마모델에서는 작성자명을 표시하려면 새로운 관계 정의가 필요했다. 기존 관계는 Users와 UserInfos는 1:1 그리고 Users와 Resumes는1:N관계였는데 작성자명(name)은 UsersInfos에만 있는 정보라 Resumes필드와 새롭게 1:N관계를 정의해주었다. 그런데 새로운 관계를 정의하고 나니 기존에는 됐던 이력서작성 api가 말썽을 부렸다. crate할 data에는 user라는걸 만들지도 않았는데.. 이런 오류가 왜 생기는지 알아보았다. 이러한 오류로, 아마 새롭게 관계 정의한것 때문에 userInfoId가 필요한듯 해서 넣어주었다. userInfoId 는 NaN이 떠서. .. 결국 튜터님한테 .. 2024. 2. 1.
팀 프로젝트 발표 & 피드백 발표자료 https://www.youtube.com/watch?v=wIXB0enbxIQ 제출용으로 만든 시연영상 팀 소개 ➡ 프로젝트 소개 ➡ 시연영상 ➡ 과제 진행하며 어려웠던 점➡ 소감 순으로 발표가 진행되었다. 피드백 현우튜터님 잘한점은 PPT 깔끔한것, 기본 필수기능들 잘 만들었음, 카테고리나 정렬에 대한 네비게이션 좋음. 상세페이지 UI 잘했음. PPT에 어려웠던 부분 상세히 얘기해줘서 좋았음. 특히 배열변환에 대한 고찰이나.. 아쉬웠던건 핵심기능사항만 있는것 같다. 영화 API도 다른걸 가져왔으면 좋았을거같음. 창민튜터님 프론트가 깔끔하다. 기능구현 잘했음. 트러블슈팅 기록이 꼼꼼해서 좋았다. 단순히 뭐가 어려웠다가 아닌 해결방법까지 제시해서 좋았다. 다만 발표가 길었습니다. (ㅋㅋㅋ) 후기 .. 2024. 1. 16.