[Express] error 모델 추가하기

적자생존·2023년 1월 1일
0

Node

목록 보기
6/17

1. 기존의 error 처리방식

기존의 error처리하는 방식은 변하지 않기 때문에 자체적인 모델을 만들어 어디서든 사용할 수 있게 만드는 방법이 좋을 거 같다.

2. models 만들기

root 경로에 models라는 폴더를 하나 생성해주고 안에 error를 처리할 수 있는 모델을 만들어서 사용할 수 있다.

이때 자바스크립트 class를 이용하여 만들어 보면

models/error.js

class HttpError extends Error {
	constructor(message, errorCode){
    	super(message) // 메시지 추가하는 프로퍼티
		this.code = errorCode // errorCode를 추가하는 프로퍼티
    }
}

module.exports = HttpError

라고 만들어 볼 수 있다.

이는 class 문법으로 지금은 잘 사용하지 않지만 아직 아무것도 모르기 때문에 일단 사용하고 추후에 리팩토링해서 사용해 봐야겠다.

3. 사용하기

기존의 사용했던 에러 모델을 위의 모델로 적용해보면

const express = require("express");
const HttpError = require("../models/http-error");
const router = express.Router();

router.get("/:pid",(req,res,next) => {
const placeId = req.params.pid
const place = DUMMY_DATA.find((p) => {
  return p.id === placeId
})
// 기존
//if(!place){
//	return res.status(404).json({message : "요청을 찾을 수 없습니다"})
//}
// 변경
if(!place){
	throw new HttpError("요청을 찾을 수 없습니다", 404)
}
res.json{{place}}
})
router.get("/:uid",(req,res,next) => {
const userId = req.params.uid
const place = DUMMY_DATA.find((p) => {
  return p.id === userId
})
// 기존
// if(!place){
//	return res.status(404).json({message : "요청을 찾을 수 없습니다"})
// }
// 변경
if(!place){
	return next(
    	new HttpError("요청을 찾을 수 없습니다", 404)
    )
}
res.json{{place}}
})

위와 같이 변경할 수 있다.

에러메시지와 상태코드를 파라미터로 넣어 HttpError 함수를 실행하게 하고 그 결과값으로 에러를 반환할 수 있도록 하는 것이 위의 모델이다.

profile
적는 자만이 생존한다.

0개의 댓글