Node.js和Mongoose模式中的Date.now代码无法正常工作

6

我已经为用户注册创建了这个模式:

let userSchema = new mongoose.Schema({
    lname: String,
    fname: String,
    username: String,
    email: String,
    password: String,
    registrationDate: {
        type: Date,
        default: Date.now()
    },
    referedBy: {
        type: String,
        default: ''
    },
    referalEnd: {
        type: Date,
        default: Date.now() + 5*365*24*60*60*1000
    },
    userRefererId: {
        type: String,
        default: uniqid()
    }
});

如您所见,模式中有一个Date.now函数和uniqid函数。

这些函数可以大约每5分钟使用一次,因为如果我在几秒钟内创建两个用户,则会生成相同的uniqid并显示相同的日期。

我的MongoDB集合图像

3个回答

12

Date.now()中的括号()去掉,只调用Date.now


4

我以前就遇到过这种情况,模式是在部署/启动时生成的,而不是在每次新创建时重新生成,因此时间总是相同的。最好在new Model().save()调用之外生成日期/时间。


0
let userSchema = new mongoose.Schema({
    lname: String,
    fname:String,
    username: String,
    email: String,
    password: String,
    registrationDate: {
        type: Date,
        default: function(){return Date.now()}
    },
    referedBy: {
        type:String,
        default: ''
    },
    referalEnd: {
        type: Date,
        default: function(){ return Date.now()  + 5*365*24*60*60*1000}
    },
    userRefererId: {
        type:String,
        default: uniqid()
    }
});

默认值:function(){return Date.now()} 也不起作用。 - Tran Anh Minh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接