这是我的猫鼬模式的一部分
var mySchema = mongoose.Schema({
expires: { type: Date, required: false }
}
我插入一个文档,明天即将到期:
item.expires = Date.now() + 1;
item.save(...);
然后我读取保存并阅读文档并测试它是否已过期
if (item.expires < Date.now())
但是,此表达式始终返回true
。查看我的调试器,item.expires列为Date,而Date.now()列为长号。
我怎样才能进行这项测试?为什么两种不同的类型甚至认为它们的设置方式相同?
答案 0 :(得分:1)
Date.now()
会返回一个数字unix timestamp。它以毫秒为单位,因此您不会将到期日期设置为第二天,而是将其设置为下一毫秒。说,如果您再次将数字转换为Date
对象,则需要使用Date
:
item.expires = Date.now() + 24*3600*1000;
//or
item.expires = new Date(Date.now() + 24*3600*1000);
您可以添加24小时毫秒,然后,如果需要,可以再次将其转换为Date
对象。