计划在node.js中发送邮件

时间:2019-04-06 20:34:56

标签: javascript node.js mongodb mongoose

我有一个简单的案例,每天一天,我必须遍历mongo数据库中的每个条目,并向 registrationDate 结束的每个用户发送电子邮件。 30天。

我的代码:

import schedule from 'node-schedule';

schedule.scheduleJob(
   '0 0 * * *',       // will occur every day at midnight
   async () => {
      await Promise.all(notifyUsers());
   },
);

notifyUsers 功能:

const THIRTY_DAYS = 1000 * 60 * 60 * 24 * 30;

const allUsersMore30days = Users.find(
   {
      hasBeenReminded: false,
      registrationDate: {
         "$lt": new Date(Date.now() - THIRTY_DAYS),
      },
   },
);

然后:

const notifyUsers = () => allUsersMore30days && allUsersMore30days.map(async(user) => {
   await Users.updateOne({ id: user.id }, { "$set": { hasBeenReminded: true }});

   await transporter.sendMail(SENDING_MAIL_LOGIC);
});

该函数已在午夜正确调用,但是如果有30天以上的用户,则不会发送邮件,也不会采取任何措施。有许多用户超过30天,但仍然没有采取任何措施。

问题:我应该在这里使用Promise吗?应该是scheduleJob异步函数吗?我一直在努力寻找帮助。

0 个答案:

没有答案