如何确定Express / Mongoose日期是否> 24小时?

时间:2014-12-16 16:23:00

标签: express mongoose mean-stack

我的目标是阻止在24小时内多次发送电子邮件。我有一个架构:

var requestSchema = new mongoose.Schema({
    email: String,
    lastSent: Date
});

在我的Express路线中,我正在测试lastSent变量是否超过一天......

var lastSent = new Date(existingRequest.lastSent);
var nextDate = new Date() - 1;

if (lastSent > nextDate) {
    if (constants.dev){ console.log('Signup request too soon'); }
} else {
    // Process request
}

...但是我似乎无法抓住约会。将日期记录到Express控制台会显示:

Last Sent: Tue Dec 16 2014 10:12:54 GMT-0500 (Eastern Standard Time)
Threshold: 1418746385786

日期格式是否有可能不匹配?

1 个答案:

答案 0 :(得分:0)

  1. The conversion of the ISODate coming from MongoDB is not necessary

  2. 您需要以毫秒为单位减去,因此您需要减去24*60*60*1000以减去一整天。

  3. 减法将返回一个时间戳,因此您将无法使用通常的Date functions - 您需要从时间戳构建一个新日期。

  4. 尝试:

    var nextDate = new Date(new Date() - 24*60*60*1000);
    if(existingRequest.lastSent > nextDate) {...}