猫鼬的错误日期

时间:2015-12-05 17:03:42

标签: javascript node.js date mongoose

我不知道为什么但是当我在mongoose中创建一个新文档时,日期不是实际日期。

这是我的架构:

var WhispSchema = new mongoose.Schema({
    text : String,
    created_at : {type : Date, index : true},
    pos : {latitude: Number, longitude: Number},
    created_by : {type : Schema.Types.ObjectId, ref : "UserSchema"},
    upvote : {type : Number, default : 0},
    downvote : {type : Number, default : 0},
    comment : [CommentSchema]
});

WhispSchema.pre("save", function (next){
    var currentDate = new Date();

    if(!this.created_at)
    {
        this.created_at = currentDate;
    }
    next();
});

为什么“created_at”字段不是我的文档创建日期?

2 个答案:

答案 0 :(得分:1)

您需要定义您的架构,如下所示

 var WhispSchema = new mongoose.Schema({
text : String,
created_at : {type : Date, index : true,default:Date.now()},
pos : {latitude: Number, longitude: Number},
created_by : {type : Schema.Types.ObjectId, ref : "UserSchema"},
upvote : {type : Number, default : 0},
downvote : {type : Number, default : 0},
comment : [CommentSchema]
 });

如果您想使用插件添加创建时间,可以按照以下方式使用

 var WhispSchema = require('mongoose-timestamp');
 WhispSchema.plugin(timestamps);

//使用npm install安装它们

答案 1 :(得分:0)

你可以定义:

created_at : {type: Date, index : true, default: Date.now}

每次创建文档时,都会将created_at属性设置为当前日期。