코드를 짜던 중 발생한 에러.

reservation 값을 안받아온다.

심심치않게 봤던 오류였다. 하지만... 이해가 가질 않았다. 왜냐면 문제가 생긴 코드에서는 굳이 showId 받아오지 않아도 되기때문이다.

위의 코드는 authmiddleware에서 req.user를 가져와서 userId를 통해 예약정보를 찾고, 찾은 예약 정보에 들어있는 showId를 통해서 찾고 그걸 반환해주는 코드였다.
여기서 showId를 찾을 수 없다니...
그러다가 터미널에 뜬 에러메시지를 찬찬히 보니 23번째줄에서 문제가 생긴거였다. 실행했던 api는 45번째 줄인데...23번째줄은 상세조회 코드였다.

상세조회를 실행했을때는 문제가 생기지않았는데 이유를 찾고보니 경로의 문제였다.
공연상세조회의 경로는 /reservation/:showId이고, 공연 예매 조회의 경로는 /reservation/me였다. 비록 showId를 int값으로 지정했어도 me가 저 경로로 들어가서 에러가 생기는 거였다. 🫨
그래서 공연 예매 조회 경로를 변경해주니 정상 실행이 되었다.
/** 공연 예매 내역 조회 **/ router.get( '/reservation/detail/:showId', authMiddleware, async (req, res, next) => { try { const { userId } = req.user; const reservation = await prisma.reservation.findFirst({ where: { UserId: +userId }, }); if (!reservation) { return res .status(400) .json({ message: '해당 유저의 예매 정보가 없습니다.' }); } const show = await prisma.Shows.findFirst({ where: { showId: +reservation.ShowId }, select: { showName: true, date: true, location: true, }, }); if (!show) { return res .status(400) .json({ message: '해당 유저의 예매 정보가 없습니다.' }); } return res.status(200).json({ data: show }); } catch (error) { next(error); } }, );