我正在创建一个议程功能(类似于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()
只返回一个标签数组?但似乎每次为标签中的每个标签返回相同的数据。在这里生气。
我刚刚在我的本地计算机上尝试过,并且没有相同的问题,但它的代码完全相同。我还检查了议程数据库,以确保没有重复的工作。