Вы можете использовать модуль узла Расписание узла для планирования, читайте об этом здесь
В основном вы должны запланировать свою работу, так что это называется cronjob .
используйте его так:
let schedule = require("node-schedule");
//get the date from DB, (i leave to you)
var d = new Date(date_from_DB);
var date = d.getDate();
var month = d.getMonth();
var hour = d.getHours();
var minutes = d.getMinutes();
var scheduledDateString = '* ' + minute + ' ' + hour + ' ' + day + ' ' + '* *';
/*
let's say the date is 20 th Oct 2019, 18:10:00, then scheduledDateString will be
'* 10 18 20 * *' which says, run this cron job (explaining from right to left)
any sec, 10 minutes after 6 pm, on 20th of each month, on any day.
*/
let clientCreateTimeStamp = date_from_DB.getTime();
let currentTimeStamp = new Date().getTime();
let diff = clientCreateTimeStamp - currentTimeStamp; //(assuming date_from_DB is always a future date)
//this will start cron job after diff secs, and will run on paricular date every month as explained above
var myCronJob = schedule.scheduleJob({start: diff, rule: scheduledDateString}, function(){
// call your function from here
});
здесь, scheduledDateString = '* ' + minute + ' ' + hour + ' ' + day + ' ' + '* *';
- это cron-формат
Формат cron состоит из:
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ │
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)