Javascript 将月份添加到mongoose模式中的当前日期';s的默认日期值

Javascript 将月份添加到mongoose模式中的当前日期';s的默认日期值,javascript,node.js,mongodb,date,mongoose,Javascript,Node.js,Mongodb,Date,Mongoose,我们有这样一个猫鼬模式: var sampleSchema = new Schema({ fieldABC: String, expireAfter1Month:{ type: Date, default: new Date() + 1 month } }); expireaAfter1month的默认值应设置为一个月后的日期值 我有这些: 如何在mongoose模式的默认日期值中将月份添加到当前日期 也许我可以喜欢 defaul

我们有这样一个猫鼬模式:

var sampleSchema = new Schema({
    fieldABC: String,
    expireAfter1Month:{
        type: Date,
        default: new Date() + 1 month
    }
});
expireaAfter1month
的默认值应设置为一个月后的日期值

我有这些:

如何在mongoose模式的默认日期值中将月份添加到当前日期

也许我可以喜欢

default: +new Date() + 30*24*60*60*1000

但是,我想知道是否有更好的/优化的方法?

基于您发布的其中一个链接的答案

i、 e

例如,如果您希望从1月29日/30日/31日起的一个月都是2月28日(当然是闰年中的29日),从3月31日起的一个月分别是4月30日、5月30日、8月31日或10月30日,那么您需要更多的逻辑

差不多

function oneMonthFromNow() {
    var d = new Date();
    var targetMonth = d.getMonth() + 1;
    d.setMonth(targetMonth);
    if(d.getMonth() !== targetMonth % 12) {
        d.setDate(0); // last day of previous month
    }
    return d;
}
new Schema({
    date: { type: Date, default: oneMonthFromNow}
})
为了说明这将如何处理月末,以下是相同的代码,不同的是
d
是传入的任意日期,而不是使用
now
-来显示这将如何工作

函数oneMonthFromNow(d){
var targetMonth=d.getMonth()+1;
d、 设定月(targetMonth);
如果(d.getMonth()!==targetMonth%12){
d、 setDate(0);//上个月的最后一天
}
返回d;
}
console.log(oneMonthFromNow(新日期('2017-10-31T00:00:00Z'));//11月30日
console.log(oneMonthFromNow(新日期('2017-11-30T00:00:00Z'));//12月30日
console.log(oneMonthFromNow(新日期('2017-12-31T00:00:00Z'));//1月31日
console.log(一个月后(新日期('2018-01-31T00:00:00Z'));//2月28日

console.log(从现在起一个月(新日期('2018-02-28:00:00Z'));//3月28日
请参见第二个链接的公认答案?使用
timeObject.setMonth(timeObject.getMonth()+1)而不是??也许?不要担心溢出。。。将月份添加到12月的日期将导致1月的日期。。。当然如果你在1月31日之前再加上一个月,结果是3月2日,这就是你想要的吗?@JaromandaX将对此进行测试并告知你。我想如果是1月31日,那么我需要2个3月,所以约会的问题往往回答得不好,看到一个好的答案是一个令人愉快的变化。:-)
function oneMonthFromNow() {
    var d = new Date();
    var targetMonth = d.getMonth() + 1;
    d.setMonth(targetMonth);
    if(d.getMonth() !== targetMonth % 12) {
        d.setDate(0); // last day of previous month
    }
    return d;
}
new Schema({
    date: { type: Date, default: oneMonthFromNow}
})