inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

mongoDB 기초부터 실무까지(feat. Node.js)

Express에서 오류 처리하기

클라이언트 오류 처리

해결된 질문

200

Dev

작성한 질문수 64

2

안녕하세요 선생님.

예를 들어, 글을 작성하는 post api controller에서 400번대 에러처리를 위한 로직을 작성할 때, req.body로온 json형태의 크기가 큰 경우 일일히 if문으로 검사를 하게되면 코드가 길어지게 되어서 가독성이 떨어질꺼 같은데 이 같은 경우에는 다른 방법이 존재하나요?

 또한 TS를 공부해서 type으로 인한 에러처리도 백엔드 개발자가 구현해놓으면 좋은지도 여쭤보고 싶습니다.(실무에서도 백엔드 개발 시 ts가 많이 쓰이는지 궁금합니다)

수업 잘 듣고 있습니다

감사합니다!

javascript mongodb aws rest-api DBMS/RDBMS nodejs 데이터 엔지니어링

답변 1

2

김시훈 (도도소프트)

Dev님 안녕하세요 :)

말씀하신대로 if문으로 처리하면 가독성이 다소 떨어질 수도 있어요. 강의에서 MongoDB를 사용 한개발을 하기 위해 express관련해서는 "기본적인" 방법들만 다루었는데요. 이 경우 미들웨어로 검증을 로직을 외부로 뺄 수 있어요. 직접 개발 할 수도 있구요 express-validator와 같은 모듈을 사용할 수 있어요.

해당 공식문서 들어가보시면 첫번째 코드 블록은 검증 과정이 없는 코드에요. 두번째 코드 블록에 미들웨어로 검증 하는걸 확인하실 수 있어요. 하지만 보시다시피 코드가 "많이" 간결해지지는 않아요. 그래서 그냥 if문으로 처리하는 경우도 흔하긴 합니다.

저 같은 경우 GraphQL을 애용하는데요. 가장 큰 장점 중 하나가 백엔드와 클라이언트 사이에 기본적인 타입 체킹은 다 해줘요. 말씀하신 텍스트의 크기를 제한하는 것들은 custom scalar같은걸 만들어서 간결하게 관리가 가능하고요. 이미지 업로드 관련 강의 작업중인데요. 이어서 GraphQL 강의 출시할 예정인데 그 때 참고하시면 좋을듯 합니다!

Typescript는 정말정말 좋아요. Typescript를 안써본 개발자는 있어도 한번 사용해본 개발자는 없다고 생각할 정도에요. 정말 신기하게도 로직 오류보다도 타입 정의를 잘못해서 발생하는 오류가 정말 많아요. 이런 오류를 배포전에 모두 잡을 수 있다고 보면 되요. 그래서 왠만하면 실무에서 Typescript를 사용할거에요. 다만 학습 차원에서는 Typescript를 너무 서두를 필요는 없다고 봐요. 기본을 충실하게 하고 나중에 Typescript를 훌륭한 보조수단으로 배워보시면 좋을듯 합니다 :)

0

Dev

항상 좋은 답변 감사드립니다!

많이 배워갑니다!

option usecreateindex is not supported 오류 나면은

0

146

1

Schemaless 특성을 재생시 검은화면이 나와요

0

240

1

user 내장 시 ref 필드 필요성

0

239

1

await 관련해서 질문드릴게 있습니다!!

0

292

2

섹션6의 3번째 강의 faker파일이 어디있나요?

0

308

1

$elemMatch 질문이 있습니다.

0

245

1

DB 업데이트에 실패했을 상황에서 대처는 어떻게 할 수 있나요.

2

766

2

블로그에 user 데이터를 추가하는 방법에 대해서

0

237

1

blog 데이터 생성시 user 관련 오류

0

351

1

age 예외 처리를 별도로 하신 이유가 궁금합니다.

2

301

2

delete 메소드가 많은 이유가 궁금합니다.

0

181

1

unique validation 처리

0

296

1

updateMany에서 user._id를 못찾는 상황

1

396

1

find() 가 리턴하는 instance member

1

431

3

몽고 db를 백업방법을 부탁합니다.

0

603

1

인덱스 생성시점

0

712

1

$pull 문법에 대한 질문

0

359

1

comment의 id가 생성되는 시점

1

301

1

리팩토링 강의에서 라우터 리팩토링 전개연산자(...)

1

315

1

session.abortTransaction()에 대한 실제 예시 문의

0

287

1

섹션9 Computed Fields 강의에서, 다음 강의 가기 전 빠진부분

-1

407

1

faker 패키지 취약성 이슈

1

485

1

라우터 리팩토링

0

341

1

섹션4 진행중, mongoose 질문

0

309

1