서버/nodejs

node.js 에서 middleware Skip 하는 방법

갓상 2021. 5. 11. 03:40

프로젝트를 진행하면서, 경우에 따라 푸시알림(FCM)을 발생시켜야 했다. 이는 전부 미들웨어로 구현하였고, 푸시알림을 발생 시키지 않을 경우에는 관련 미들웨어를 건너 뛰게 하였다. 해당 부분을 까먹기 전에 기록으로 남긴다.

 

/routes/poo.js

위의 라우터에 대해 간단하게 차례로 설명하자면 아래와 같다.

 1)setCurrentUser : JWT를 decode 하여 사용자id 추출

 2)createPooData : 라즈베리파이로 부터 받아온 대변의 색상 값을 DB에 Create

 3)searchFcmKey : App으로 부터 받아서 DB에 저장해 놓은 FCM Key값 조회

 4)createPushAlarm : 푸시알림 발생

 

1, 2번 미들웨어는 항상 사용돼서 건너 뛸 필요가 없지만, 3번과 4번 미들웨어는 경우에 따라 사용하지 않기 때문에 건너뛰어야 했다.

 

/middleware/dogPoo.js

createPooData 미들웨어이다. 여기서 봐야 할 부분은 line 6이다.

req.shouldRunFcm에 라즈베리파이 에서 boolean으로 보내주는 값을 저장하였다. (각자의 상황에 맞게 변경)

 

/middleware/alarm.js

searchFcmKey 미들웨어이다. 여기서 봐야 할 부분은 line 32~34이다.

createPooData에서 넣어준 "shouldRunFcm" 값으로 if문을 사용해서 건너 뛸 수 있게 하였다.

 

주의할 점은, return next() 가 아닌 next()만 적으면, 다음 미들웨어로 이동하고, 다음 미들웨어가 끝나면 다시 돌아오게 된다. 

 

참고 링크

www.geeksforgeeks.org/how-to-skip-a-middleware-in-express-js/