Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Express 김세환 sprint7 #6

Open
wants to merge 4 commits into
base: express-김세환
Choose a base branch
from

Conversation

CisThard
Copy link
Collaborator

@CisThard CisThard commented Dec 17, 2024

요구사항

기본 요구사항

중고마켓

  • mongoDB에서 PostgreSQL을 사용하도록 코드를 마이그레이션 해주세요.

공통

  • PostgreSQL를 이용해 주세요.
  • 데이터 모델 간의 관계를 고려하여 onDelete를 설정해 주세요.
  • 데이터베이스 시딩 코드를 작성해 주세요.
  • 각 API에 적절한 에러 처리를 해 주세요.
  • 각 API 응답에 적절한 상태 코드를 리턴하도록 해 주세요.

자유게시판

  • Article 스키마를 작성해 주세요.
    • id, title, content, createdAt, updatedAt 필드를 가집니다.
  • 게시글 등록 API를 만들어 주세요.
    • title, content를 입력해 게시글을 등록합니다.
  • 게시글 조회 API를 만들어 주세요.
    • id, title, content, createdAt를 조회합니다.
  • 게시글 수정 API를 만들어 주세요.
  • 게시글 삭제 API를 만들어 주세요.
  • 게시글 목록 조회 API를 만들어 주세요.
    • id, title, content, createdAt를 조회합니다.
    • offset 방식의 페이지네이션 기능을 포함해 주세요.
    • 최신순(recent)으로 정렬할 수 있습니다.
    • title, content에 포함된 단어로 검색할 수 있습니다.

댓글

  • 댓글 등록 API를 만들어 주세요.
    • content를 입력하여 댓글을 등록합니다.
    • 중고마켓, 자유게시판 댓글 등록 API를 따로 만들어 주세요.
  • 댓글 수정 API를 만들어 주세요.
    • PATCH 메서드를 사용해 주세요.
  • 댓글 삭제 API를 만들어 주세요.
  • 댓글 목록 조회 API를 만들어 주세요.
    • id, content, createdAt 를 조회합니다.
    • cursor 방식의 페이지네이션 기능을 포함해 주세요.
    • 중고마켓, 자유게시판 댓글 목록 조회 API를 따로 만들어 주세요.

주요 변경사항

스크린샷

image

멘토에게

  • 셀프 코드 리뷰를 통해 질문 이어가겠습니다.

@CisThard CisThard requested a review from seobew December 17, 2024 15:16
@CisThard CisThard self-assigned this Dec 17, 2024
@CisThard CisThard added 매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. 제출일 이후 제출한PR 제출 마감일(일요일) 이후에 제출하는 PR입니다. 진행 중 🏃 스프린트 미션 진행중입니다. labels Dec 17, 2024
Copy link
Collaborator

@seobew seobew left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

세환님 고생하셨습니다 ㅎㅎ

product, article 관련 코드를 나누시려는것 좋았습니다.
다만 서버가 도는 코드를 main.js 혹은 server.js 로 빼고,
product, article부분들을 import하는 형식이었으면 더 좋았을것 같아요!
추가로 validation부분도 있으면 더 좋을것 같아요!

전반적으로 깔끔하게 짜주셨습니다!
수고하셨습니다~

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오.. 배포를 docker로 하시는건가요? 더할나위없이 좋습니다!


app.get('/articles/:id', asyncHandler(async (req, res) => {
const { id } = req.params;
const article = await prisma.article.findUnique({
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

findUniqueOrThrow 를 해주시면 바로 validation 에러를 내뱉어줘서 에러 핸들링이 더 쉽습니다~ 현재는 없을때 서버에러가 날거라서요!

content,
},
});
res.json(article);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

create의 경우 201 상태코드를 같이 내려주는게 좋을것 같아요

const article = await prisma.article.delete({
where: { id },
});
res.json(article);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete의 경우 204 상태코드와 함께 보통 빈 응답을 내려줍니다 ㅎㅎ


const runningPort = process.env.PORT || 3000;
app.listen(runningPort, () => {
console.log(`Server is running on http://localhost:${runningPort}`);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

runningPort로 까지는 안빼도 될것 같아요~ ${process.env.PORT || 3000} 요렇게 해주시면 될것 같습니다!

// 상품 수정 API
app.patch('/products/:id', asyncHandler(async (req, res) => {
const id = req.params.id;
const product = await Product.findById(id);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

요렇게도 좋은데 Product.update가 더 나을것 같아요

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. 제출일 이후 제출한PR 제출 마감일(일요일) 이후에 제출하는 PR입니다. 진행 중 🏃 스프린트 미션 진행중입니다.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants