[Project_] Item-Simulator [Trouble Shooting]

2024. 11. 28. 21:01·Project_xxx

권한 미들웨어 설정 문제

● Error가 발생

Error Log ▼

prisma:error 
Invalid `prisma.account.findFirst()` invocation:

{
  where: {
+   accountId: {
+     equals: Int | IntFieldRefInput,
+     in: Int[],
+     notIn: Int[],
+     lt: Int | IntFieldRefInput,
+     lte: Int | IntFieldRefInput,
+     gt: Int | IntFieldRefInput,
+     gte: Int | IntFieldRefInput,
+     not: Int | NestedIntFilter
+   }
  }
}

Argument `accountId` is missing.

 

● 왜 발생했을까? 

 - admin.router와 users.router를 분리해서 관리자 계정과 일반 유저 계정을 분리하는 과정에서 발생
 - 단순히 같은 auth.middleware로 미들웨어 처리를 하면 실행이 될 것이라 예상
 - user.router는 정상 작동하는 반면, admin.router는 위와 같은 Error가 발생

 

● Error에 대해 잘 대응했는가?

 - 토큰에 저장된 값과 데이터베이스 검색 조건이 일치하지 않아 발생한 문제

○ 해결 방법

 auth.middleware.js 수정 전 ▼

const user = await prisma.account.findFirst({
      where: { accountId: +accountId },
    });

 auth.middleware.js 수정 후 ▼

const user = await prisma.account.findFirst({
      where: {
        userId: accountId, // accountId 대신 userId로 검색
      },
    });

- 토큰에서 추출한 accountId를 userId 필드로 검색하도록 변경

- 토큰 생성 시 accountId 대신 userId를 저장하도록 수정

 

- 해결이 완료된 줄 알았으나 또 다른 곳에서 Error가 발생

 

● 최종적으로 해결한 방법

 Error Log ▼

prisma:error 
Invalid `prisma.account.findFirst()` invocation:

{
  where: {
    userId: 2
            ~
  }
}

Argument `userId`: Invalid value provided. Expected StringFilter or String, provided Int.

 - 이번에 오류 발생지는 users.router에서 Error가 발생

 - auth.middleware를 admin 미들웨어에 맞춰서 수정하니 users.router에서 Error가 발생

 

 ○ 해결 방법

 - 단순한 방법이지만 auth.middleware를 두 가지로 정의

 - admin 미들웨어 = adminauth.middleware, users 미들웨어 = auth.middleware

 auth.middleware.js =기존에 쓰던 대로 ▼

const user = await prisma.account.findFirst({
      where: { accountId: +accountId },
    });

 

 adminauth.middleware.js = 위에서 수정한 방법대로 ▼

const user = await prisma.account.findFirst({
      where: {
        userId: accountId, // accountId 대신 userId로 검색
      },
    });

- 두 개의 미들웨어를 분리해서 사용하니 해결완료

 

● 결말

 - 근본적인 Error의 이유는 미들웨어 정의의 문제였었고 단순히 admin과 users의 계정은
   하나만 존재할 것이니 똑같은 작동을 할 줄 알았던 얇게 생각한 것이 원인이었다.

 - 한 개의 미들웨어로 모든 것을 처리하려고 한 것이 문제였었기 때문에 미들웨어를
   각각 admin과 users 따로 정의했고 Error가 해결되었다.

'Project_xxx' 카테고리의 다른 글

[Project_] FO - 2 (Trouble Shooting)  (1) 2024.12.06
[Project_] FO - 1  (1) 2024.12.03
[Project_] JSROUGE - 4 (Troubleshooting)  (0) 2024.11.14
[Project_] JSROUGE - 3  (0) 2024.11.13
[Project_] JSROUGE - 2  (0) 2024.11.12
'Project_xxx' 카테고리의 다른 글
  • [Project_] FO - 2 (Trouble Shooting)
  • [Project_] FO - 1
  • [Project_] JSROUGE - 4 (Troubleshooting)
  • [Project_] JSROUGE - 3
wakelight23
wakelight23
했던 공부를 기록하는 곳
  • wakelight23
    wakelight23 공부기록
    wakelight23
  • 전체
    오늘
    어제
    • 분류 전체보기 (110)
      • Programming Language (26)
        • Error Note (1)
        • HTML, CSS (3)
        • Javascript 공부기록 (5)
        • SQL 문제풀이 (4)
      • Develop Diary (34)
        • Interview (20)
        • TheFourFs (13)
      • Project_xxx (18)
      • IT (32)
        • DB (0)
        • Hardware (3)
        • Network (10)
        • Server (11)
        • OS (4)
        • 게임수학 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    KPT회고
    Today I learned
    Til
    today i leraned
    weekly i learned
    today i learnd
    today i lerned
    Wil
  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
wakelight23
[Project_] Item-Simulator [Trouble Shooting]
상단으로

티스토리툴바