设置Heroku Scheduler作业以通过电子邮件发送给所有用户(Meteor / MongoDB)

时间:2016-01-07 18:43:05

标签: node.js mongodb heroku meteor cron

有没有人知道是否可以制作Heroku Scheduler工作,每天都会向我的所有用户发送一次电子邮件?我正在使用Meteor和MongoDB。

我可以看到Heroku Scheduler可以运行命令,例如" node somefile.js"但我似乎无法弄清楚如何在这样的文件中建立与mongodb的连接。我可以在不涉及Meteor的情况下以某种方式进入数据库吗?

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

我最终找到了一个包这样做:synced-cron。基本上,您需要设置一种方法,使用该方法来触发定期作业。

包网站上还有一个示例代码:

SyncedCron.add({
  name: 'Crunch some important numbers for the marketing department',
  schedule: function(parser) {
    // parser is a later.parse object
    return parser.text('every 2 hours');
  },
  job: function() {
    var numbersCrunched = CrushSomeNumbers();
    return numbersCrunched;
  }
});

在这里,您只需要替换作业功能中的代码即可发送电子邮件。

该作业支持“每5分钟”,“下午5:00”等计划。该程序包依赖于Later.js中的文本解析器来解析计划。您可以参考Later.js doc

答案 1 :(得分:0)

两种不同的选择。

首先是使用Heroku的调度程序,

在bin目录中创建文本文件:

#! /app/.heroku/node/bin/node
var test = require('./jobToDo') //put your job in this file (jobToDo.js)

现在您不必将作业放在另一个.js文件中,但这样可以更容易使用,而不是在纯文本文件中编码。 (再次由你决定)

第一行#! /app/.heroku/node/bin/node可能因您的配置设置而异,具体取决于您的操作系统和节点/ npm设置。

第二个选项是cron样式库。这将允许您决定何时运行代码。

这很简单,对我来说是首选方法。

var CronJob = require('cron').CronJob;
var fn = function(){
   // Do Something
}
var job = new CronJob({
  cronTime: "00 00 02 * * 1-5",
  onTick: fn,
  start: true,
  timeZone: 'America/Los_Angeles'
});

您可以查看文档on github