YS's develop story

NodeJS Node-Schedule둜 νŠΉμ •μ‹œκ°„μ— μ‹€ν–‰ ν•  μž‘μ—… μ˜ˆμ•½ν•˜κΈ° πŸ€— λ³Έλ¬Έ

기타

NodeJS Node-Schedule둜 νŠΉμ •μ‹œκ°„μ— μ‹€ν–‰ ν•  μž‘μ—… μ˜ˆμ•½ν•˜κΈ° πŸ€—

Yusang 2021. 7. 20. 07:56

πŸ€— NodeJS  Node Schedule둜 νŠΉμ • μ‹œκ°„μ— μ‹€ν–‰ν•  μž‘μ—… μ˜ˆμ•½ν•˜κΈ° 


βŒ› Problem

μ˜ˆμ•½μ‹œκ°„ 1μ‹œκ°„ 전에 μ‚¬μš©μžμ—κ²Œ μ˜ˆμ•½ 확인 ν‘Έμ‹œ μ•Œλ¦Όμ„ μ „μ†‘ν•˜λ €κ³  λ‘œμ§μ„ μ§œλŠ” 쀑인데

μ–΄λ–»κ²Œ ν•˜λ©΄ 1μ‹œκ°„ 전에 μ•Œλ¦Όμ„ 보낼지 고민을 ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. πŸ˜•  
FCM을 ν™œμš©ν•˜λ©΄ μ‚¬μš©μžκ°€ μ˜ˆμ•½μ„ ν•  λ•Œ νŠΉμ • μ‹œκ°„μ— μ•Œλ¦Όμ„ 보내도둝 μ„€μ •ν•  수 μžˆμ§€λ§Œ 

μ‚¬μš©μžκ°€ μ˜ˆμ•½μ„ μ·¨μ†Œν•˜κ²Œ λ˜λ”λΌλ„ κ·Έ μ•Œλ¦Όμ€ μ „μ†‘λœλ‹€λŠ” 문제점이 μžˆμŠ΅λ‹ˆλ‹€.
μ‚¬μš©μžκ°€ μ˜ˆμ•½μ„ ν•œ ν›„ μ˜ˆμ•½μ„ μ·¨μ†Œν•˜μ§€ μ•Šμ•˜μ„ κ²½μš°μ—λ§Œ μ˜ˆμ•½ μ‹œκ°„ ν•œ μ‹œκ°„ 전에

λ”± μ•Œλ¦Όμ„ 보낼 수 μžˆλŠ” 방법은 μ—†μ„κΉŒμš”?


πŸ“œ Solution

Node Schedule λͺ¨λ“ˆμ„ ν™œμš©ν•΄μ„œ νŠΉμ • μ‹œκ°„μ— λ‚΄κ°€ μ›ν•˜λŠ” μ½”λ“œκ°€ μž‘λ™λ˜λ„λ‘ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
이 λͺ¨λ“ˆμ„ ν™œμš©ν•΄μ„œ μ˜ˆμ•½μ‹œκ°„ ν•œ μ‹œκ°„ 전에 μ‚¬μš©μžμ˜ μ˜ˆμ•½μƒνƒœλ₯Ό ν™•μΈν•˜κ³ 

μ‚¬μš©μžμ˜ μ˜ˆμ•½μ΄ μ·¨μ†Œλ˜μ§€ μ•Šμ•˜λ‹€λ©΄ ν‘Έμ‹œ μ•Œλ¦Όμ„ 보내도둝 λ‘œμ§μ„ κ΅¬μ„±ν•˜λ©΄ λ©λ‹ˆλ‹€. πŸ˜„

 

npm install node-schedule

μœ„μ™€ 같은 λͺ…λ Ήμ–΄λ‘œ node-scheduleλ₯Ό μ„€μΉ˜ν•΄ μ€λ‹ˆλ‹€.

 

const schedule = require('node-schedule');

node-scheduleλ₯Ό μ‚¬μš©ν•  κ²ƒμž„μ„ λͺ…μ‹œν•΄ μ€λ‹ˆλ‹€.

 

 let date = new Date(reservationTime);
 date.setHours(data.getHours() - 1);

μ‚¬μš©μžμ—κ²Œ μž…λ ₯받은 μ‹œκ°„μœΌλ‘œλΆ€ν„° 1μ‹œκ°„ 전에 μ•Œλ¦Όμ΄ 가도둝 λ‘œμ§μ„ κ΅¬μ„±ν–ˆμŠ΅λ‹ˆλ‹€.

 

참고둜...
NodeJS의 new Date()λŠ” OS와 λ¬΄κ΄€ν•˜κ²Œ UTC μ‹œκ°„μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€.

κ·Έλž˜μ„œ KSTλ₯Ό μ–»κ³  μ‹ΆμœΌλ©΄ 9μ‹œκ°„μ„ 더해주어야 ν•©λ‹ˆλ‹€. 

κ·Έλž˜μ„œ μ²˜μŒμ— console.log둜 μ‹œκ°„μ„ μ²΄ν¬ν–ˆμ„ λ•Œ μ œκ°€ μ›ν•˜λŠ” μ‹œκ°„μ΄ λ‚˜μ˜€μ§€ μ•Šμ•„μ„œ 많이 ν—€λ§ΈλŠ”λ°

console.log둜 좜λ ₯λ˜λŠ” μ‹œκ°„μ€ μ „ν˜€ μƒκ΄€ν•˜μ§€ μ•Šμ•„λ„ λ©λ‹ˆλ‹€.

 

 

   schedule.scheduleJob(date, function () {
            console.log("μž…λ ₯ν•œ dateμ‹œκ°„μ— 이λ₯Ό 좜λ ₯ν•΄ μ€λ‹ˆλ‹€!.")
        });

μš°μ„  μŠ€μΌ€μ€„λŸ¬λ₯Ό ν…ŒμŠ€νŠΈν•˜κΈ° μœ„ν•΄ μœ„μ™€ 같이 νŠΉμ • μ‹œκ°„μ— console.logκ°€ 좜λ ₯λ˜λŠ”μ§€ 확인해 λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

κ²°κ³ΌλŠ” μœ„μ²˜λŸΌ 잘 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

 

.....
.....

 schedule.scheduleJob(date, async function () {
            try {
                console.log("μŠ€μΌ€μ€„λŸ¬ μ‹€ν–‰");
                const checkReservationRows = await reservationDao.checkReservation(
                    connection,
                    reservationIdx
                );
                if (checkReservationRows[0].CNT == 1) {
                    await reservationProvider.postFcm(
                        estimateIdx,
                        reservationTime,
                        userIdx);
                } else {
                    console.log(userIdx+"번 μœ μ €μ˜ μ˜ˆμ•½μ˜ μœ μš”ν•˜μ§€ μ•Šμ•„ ν‘Έμ‹œμ•Œλ¦Όμ΄ μ „μ†‘λ˜μ§€ μ•ŠμŒ.")
                }
            } catch (e) {
                console.log(e);
            }
        });

이λ₯Ό ν™œμš©ν•˜μ—¬ μ˜ˆμ•½ ν•œ μ‹œκ°„ 전에 μ‚¬μš©μžμ˜ μ˜ˆμ•½μ΄ μœ νš¨ν•œμ§€ 확인을 ν•˜κ³ ,

μœ νš¨ν•˜λ‹€λ©΄ κ·Έ μ‚¬μš©μžμ—κ²Œ ν‘Έμ‹œ μ•Œλ¦Όμ„ μ „μ†‘ν•˜λŠ” λ‘œμ§μ„ κ΅¬μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

 

 

 

 

node-schedule

A cron-like and not-cron-like job scheduler for Node.

www.npmjs.com

μœ„ μ‚¬μ΄νŠΈμ—μ„œ node-scheduleκ³Ό κ΄€λ ¨λœ μžμ„Έν•œ κΈ°λŠ₯듀을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

νŠΉμ • μ‹œκ°„μ— μ‹€ν–‰λ˜λ„λ‘ ν•  수 μžˆμ„ 뿐만 μ•„λ‹ˆλΌ, 맀주 μ›”μš”μΌμ— μ‹€ν–‰λ˜λ„λ‘ ν•  μˆ˜λ„ 있고 
λ°˜λ³΅λ˜λ„λ‘ μ„€μ •ν•  수 도 μžˆμŠ΅λ‹ˆλ‹€.



Comments