Node函数在Mongoose查询中运行多次

时间:2014-09-16 09:50:14

标签: node.js mongodb mongoose

我正在创建一个议程功能(类似于cron作业),每晚给我们发送一个新用户列表。我想也许我不明白如何从Mongoose调用返回数据,因为我似乎通过Mongoose查询返回相同数量的结果来获取重复的电子邮件。 (邮戳是这里的电子邮件api)

这是我的代码的精简版本:

var Agenda = require('agenda');
var agenda = new Agenda({db: { address: 'mongodb://localhost/example }});
var User = mongoose.model('User', userSchema);

agenda.define('example email', function() {
  User.find({ date: { $gt: date }}, function (err, users) {
    if (err) // handle error
    postmark.send({
      // setup and send email with users listed in body
    }, function(error, success) {
      if (error) // handle error
      console.log('Sent successfully');
    });
});

// Run every day at 2am
agenda.every('* 2 * * *', 'example email');
agenda.start();

首先,当我运行服务器时,电子邮件会立即发送(此代码位于app.js中) - 我不确定为什么会这样。但主要问题是我收到了多封电子邮件 - 相隔10分钟收到的电子邮件,无论是否相关。因此,例如,数据库查询返回了4个用户,因此我收到了4封完全相同数据的电子邮件。

我是否需要关闭查询或其他内容?我在发送电子邮件之前没有循环遍历labels - 我认为model.find()只返回一个标签数组?但似乎每次为标签中的每个标签返回相同的数据。在这里生气。

我刚刚在我的本地计算机上尝试过,并且没有相同的问题,但它的代码完全相同。我还检查了议程数据库,以确保没有重复的工作。

0 个答案:

没有答案