currypang / layered-refactoring-market

0 stars 0 forks source link

feedback #34

Open ggomma opened 3 months ago

ggomma commented 3 months ago

Feedback

총평

개선 사항

middleware와 의존성 주입

3 Layered Architecture를 조금 더 잘 사용하자면 middleware에서 repository를 주입받아 repository를 호출하는 것이 좋습니다.

const validateRefreshToken = (userRepository) => {
    return async (req, res, next) => {
      ...
    }
}

router.use("/", validateRefreshToken(userRepository), (req, res, next) => ...)

https://github.com/currypang/layered-refactoring-market/blob/b4c48639dd9c84fea8406276f74c76c613a31cb2/src/middlewares/require-refresh-token-middleware.js#L9-L12

Custom Error

error-handler.middleware.js에서 if(err instanceof HttpError.NotFound) 와 같은 구문을 사용하기 위해서는 error를 발생하는 부분에서 HttpError.NotFound를 사용해야 합니다.

예시를 들자면 다음과 같습니다.

export class UsersController {
  // 내 정보 조회
  getUser = async (req, res, next) => {
    const user = req.user;
    try {
      return res
        .status(HTTP_STATUS.OK)
        .json({ status: HTTP_STATUS.OK, message: MESSAGES.USERS.READ_ME.SUCCEED, data: user });
    } catch (err) {
      const error = new HttpError.Conflict(err.message);
      next(error);
    }
  };
}
currypang commented 3 months ago

피드백 감사합니다!