Node.js6 min read
Scheduled Jobs with node-cron
Schedule recurring tasks with cron jobs. Automate cleanups and reports.
Michael Torres
December 19, 2025
0.0k0
Scheduled Jobs with node-cron
What are Cron Jobs?
Cron jobs run code at specific times automatically:
- Every day at midnight
- Every Monday at 9 AM
- Every 5 minutes
- First day of each month
Setup
npm install node-cron
Basic Usage
const cron = require('node-cron');
cron.schedule('* * * * *', () => {
console.log('Running every minute');
});
cron.schedule('0 0 * * *', () => {
console.log('Running daily at midnight');
performDailyCleanup();
});
cron.schedule('0 9 * * 1', () => {
console.log('Running every Monday at 9 AM');
sendWeeklyReport();
});
Cron Syntax
* * * * *
│ │ │ │ │
│ │ │ │ └─ Day of week (0-7, 0 and 7 = Sunday)
│ │ │ └─── Month (1-12)
│ │ └───── Day of month (1-31)
│ └─────── Hour (0-23)
└───────── Minute (0-59)
Examples:
'0 0 * * *' → Every day at midnight
'*/5 * * * *' → Every 5 minutes
'0 9 * * 1-5' → Weekdays at 9 AM
'0 0 1 * *' → First day of month
'0 */6 * * *' → Every 6 hours
Real Example: Delete Old Logs
cron.schedule('0 2 * * *', async () => {
console.log('Cleaning old logs...');
const thirtyDaysAgo = new Date();
thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
await Log.deleteMany({
createdAt: { $lt: thirtyDaysAgo }
});
console.log('Cleanup complete');
});
Real Example: Daily Report
cron.schedule('0 8 * * *', async () => {
const yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
const stats = {
newUsers: await User.countDocuments({
createdAt: { $gte: yesterday }
}),
orders: await Order.countDocuments({
createdAt: { $gte: yesterday }
})
};
await sendEmailReport(stats);
});
Start/Stop Jobs
const task = cron.schedule('* * * * *', () => {
console.log('Running task');
}, {
scheduled: false
});
task.start();
task.stop();
task.destroy();
Key Takeaway
Use cron for recurring tasks. Understand cron syntax. Handle errors in jobs. Consider timezone for global apps. Use Bull queue for complex job management.
#Node.js#Cron#Scheduling#Automation