프로젝트를 진행하면서, 경우에 따라 푸시알림(FCM)을 발생시켜야 했다. 이는 전부 미들웨어로 구현하였고, 푸시알림을 발생 시키지 않을 경우에는 관련 미들웨어를 건너 뛰게 하였다. 해당 부분을 까먹기 전에 기록으로 남긴다.
위의 라우터에 대해 간단하게 차례로 설명하자면 아래와 같다.
1)setCurrentUser : JWT를 decode 하여 사용자id 추출
2)createPooData : 라즈베리파이로 부터 받아온 대변의 색상 값을 DB에 Create
3)searchFcmKey : App으로 부터 받아서 DB에 저장해 놓은 FCM Key값 조회
4)createPushAlarm : 푸시알림 발생
1, 2번 미들웨어는 항상 사용돼서 건너 뛸 필요가 없지만, 3번과 4번 미들웨어는 경우에 따라 사용하지 않기 때문에 건너뛰어야 했다.
createPooData 미들웨어이다. 여기서 봐야 할 부분은 line 6이다.
req.shouldRunFcm에 라즈베리파이 에서 boolean으로 보내주는 값을 저장하였다. (각자의 상황에 맞게 변경)
searchFcmKey 미들웨어이다. 여기서 봐야 할 부분은 line 32~34이다.
createPooData에서 넣어준 "shouldRunFcm" 값으로 if문을 사용해서 건너 뛸 수 있게 하였다.
주의할 점은, return next() 가 아닌 next()만 적으면, 다음 미들웨어로 이동하고, 다음 미들웨어가 끝나면 다시 돌아오게 된다.
참고 링크
www.geeksforgeeks.org/how-to-skip-a-middleware-in-express-js/
'서버 > nodejs' 카테고리의 다른 글
갑자기 궁금해져서 정리하는 js 변수 선언 방식 (0) | 2021.05.11 |
---|---|
Sequelize 사용 기록(CRUD/Pagination) - 03 (0) | 2021.04.27 |
너무 헤매서 기록하는 sequelizer 사용 일지 02 (0) | 2021.04.17 |
Sequelize 사용 기록 - 01 (0) | 2021.04.12 |
내가 헤매서 쓰는 Firebase <-> Nodejs 연동 (0) | 2021.04.08 |