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-엄성민 sprint6 #3

Merged

Conversation

eomsung
Copy link
Collaborator

@eomsung eomsung commented Dec 7, 2024

요구사항

기본

중고마켓

  • Product 스키마를 작성해 주세요.

  • id, name, description, price, tags, createdAt, updatedAt필드를 가집니다.

  • 필요한 필드가 있다면 자유롭게 추가해 주세요.

  • 상품 등록 API를 만들어 주세요.

  • name, description, price, tags를 입력하여 상품을 등록합니다.

  • 상품 상세 조회 API를 만들어 주세요.

  • id, name, description, price, tags, createdAt를 조회합니다.

  • 상품 수정 API를 만들어 주세요.

  • PATCH 메서드를 사용해 주세요.

  • 상품 삭제 API를 만들어 주세요.

  • 상품 목록 조회 API를 만들어 주세요.

  • id, name, price, createdAt를 조회합니다.

  • offset 방식의 페이지네이션 기능을 포함해 주세요.

  • 최신순(recent)으로 정렬할 수 있습니다.

  • name, description에 포함된 단어로 검색할 수 있습니다.

  • 각 API에 적절한 에러 처리를 해 주세요.

  • 각 API 응답에 적절한 상태 코드를 리턴하도록 해 주세요.

  • . env 파일에 환경 변수를 설정해 주세요.

  • CORS를 설정해 주세요.

  • render.com로 배포해 주세요.

  • MongoDB를 활용해 주세요.

주요 변경사항

스크린샷

image

멘토에게

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

@eomsung eomsung requested a review from jjjwodls December 7, 2024 11:30
@eomsung eomsung self-assigned this Dec 7, 2024
@eomsung eomsung added the 진행 중 🏃 스프린트 미션 진행중입니다. label Dec 7, 2024
@eomsung eomsung added 매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. 최종 제출 스프린트미션 최종 제출본입니다. and removed 진행 중 🏃 스프린트 미션 진행중입니다. labels Dec 8, 2024
} = req.query;
const offset = (page - 1) * pageSize;

if (page < 1 || pageSize < 1) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

클라이언트에서 숫자 타입인지 체크해준 부분은 확인 했습니다

서버에서도 추가로 확인해주시는걸 권장드립니다

서버로의 요청은 외부에서 올 수 있기때문에 불필요한 예외 방지를 위해 서버에서도 유효성 체크가 필요합니다.

"/products/:id",
asyncHandler(async (req, res) => {
const id = req.params.id;
const product = await Product.findById(id).select("-updatedAt");
Copy link
Collaborator

Choose a reason for hiding this comment

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

검색을 한 후 존재하지 않는 경우 예외 처리를 해주는 로직을 추가해주세요!

"/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 를 업데이트 하기 전에 조회가 제대로 되어

존재하는지 체크를 한 후 진행해주세요!

app.delete(
"/products/:id",
asyncHandler(async (req, res) => {
const id = req.params.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 가 존재하는지 체크해주세요!

@jjjwodls
Copy link
Collaborator

성민님 스프린트 고생 많으셨어요

백엔드 쪽도 분리해서 잘 작업해주셨네요

코드를 분리하여 백엔드, 프론트엔드를 구분한건 좋습니다

유효성 검증 및 데이터 체크하는 부분만 조금만 더 봐주시면 될 것 같습니다

@jjjwodls jjjwodls merged commit 559174e into codeit-sprint-fullstack:express-엄성민 Dec 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. 최종 제출 스프린트미션 최종 제출본입니다.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants