Просто чтобы дать один из возможных подходов: я бы использовал задания CRON для реализации этого сценария, в случае NodeJS это означает использование модуля, подобного cron .Служба может быть реализована в виде RESTful API.
Конкретная реализация зависит от требований к производительности и свойств, таких как количество запущенных напоминаний, но одним из основных решений было бы хранение дат внутри MongoDBи перезагрузите его при каждом перезапуске веб-приложения.Затем вы должны создать работу CRON для каждой даты. Помните: эта стратегия может привести к проблемам с производительностью!
Здесь вы найдете простой псевдокод для создания задания CRON на основе даты, сохраненной в базе данных:
const cron = require('cron');
let date = new Date(...); // Date object fetched from database
let job = new cron.CronJob(date, () => {
// Send email with nodemailer
});
job.start();