0

我已经使用 npm 包cron设置了一个 cron 作业。我正在尝试执行以下Coll.find().forEach功能,但出现错误Error: Can't wait without a fiber

    var job = new CronJob({
      cronTime: '00 09 11 * * 1-5',
      onTick: function() {
            var userIds = []

            Coll.find().forEach(function(doc) {
                    userIds.push(doc._id)
            });
      },
      start: false,
      timeZone: "Europe/London"
    });
   job.start();

我一直在使用 npm 包纤维和未来的库。我仍然遇到同样的错误。

var resultOne = collFind();


  function collFind() {
     var f = new future()
     var userIds = []

     Coll.find().forEach(function(doc) {
        userIds.push(doc.userId)
    });

    return f['return']({userIds:userIds}
    return f.wait()
  }
4

1 回答 1

2

尝试使用Meteor.bindEnvironment.

var job = new CronJob({
  cronTime: '00 09 11 * * 1-5',
  onTick: Meteor.bindEnvironment(function() {
        var userIds = []

        Coll.find().forEach(function(doc) {
                userIds.push(doc._id)
        });
  }),
  start: false,
  timeZone: "Europe/London"
});
job.start();

它将确保回调 get 在当前纤程中运行,并确保所有全局变量都可访问。

于 2015-05-19T10:31:41.687 回答