您好,想请问一下,最近在写个功能為使用者每次新增一笔资料后,还要设一个三天后过期的资料,最后再写个 setInterval 每一分钟检查一次,如果过期就标记并作其他后续处理。但不知為何,用 mongoose 设好的 schema 的日期有机会会产生跳掉的情形,而且是日期提前了,像今天 create_at 是 10 号,但 expire_date 却跑到 9 号去,造成资料一新增马上就过期,~~有时则是 create_at 提前了,~~请问这是怎么一回事?谢谢。
更正,create_at 的资料没问题,是 expire_date 算完后时间反而提前了,抱歉误导了。
node 版本是 0.8.23 mongoose: 3.8.2 mongodb: 2.0.4
//model
var Data = new Schema({
create_at: { type: Date, default: Date.now },
expire_date: { type: Date, default: (new Date().setDate(new Date().getDate() + 3)) },
expired: false
});
mongoose.model('Data', DataSchema);
// check out date
setInterval(function() {
Data.find(function(err, data) {
if(!err) {
var length = data.length;
for(var i =0; i < length; i++) {
if(!data[i].expired && new Date() > data[i].expire_date) {
data[i].expired = true;
data[i].save();
}
}
}
});
}, 60000);