인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

재열님의 프로필 이미지
재열

작성한 질문수

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

API 사용량 제한하기

무료와 프리미엄으로 미들웨어를 확장시 model 질문

작성

·

362

0

무료와 프리미엄으로 미들웨어를 확장시킬 때 user모델에는 domain.type이 없기 때문에 undefined가 나오고 있습니다.

이때 table을 수정해야하는지 domain을 불러와서 코드를 짜야하는지 고민이되서 질문드려봅니다!

현재까지 코드 수정사항입니다!

const limiter = rateLimit({
  widowMs: 60 * 1000,
  max: (req, res) => {
    console.log("req.user.type:", req.user.type);
    if (req.user?.type === "premium") {
      return 10;
    }
    return 2;
  },
  handler(req, res) {
    res.status(this.statusCode).json({
      code: this.statusCode,
      message: `1분에 ${
        req.user?.type === "premium" ? "10" : "2"
      } 회만 요청 할 수 있습니다`,
    });
    console.log(req.user.type);
  },
});

exports.apiLimiter = async (req, res, next) => {
  let user;
  console.log("user1:", user);
  console.log("res.locals.decoded:", res.locals.decoded);
  if (res.locals.decoded) {
    user = await User.findOne({ where: { id: res.locals.decoded.id } });
    console.log("user3:", user);
  }
  req.user = user;
  console.log("user2:", user);
  limiter(req, res, next);
};

답변 1

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

domain을 include하신 후에 req.user.Domain[0]?.type 이 premium인지 체크하시면 됩니다!

재열님의 프로필 이미지
재열
질문자

아!! include로 join을 하면 되는거였네요ㅎㅎ 감사합니다!!!!

재열님의 프로필 이미지
재열

작성한 질문수

질문하기