日期总是在mongo开始

时间:2015-11-25 19:35:12

标签: node.js mongodb date mongoose

我有一个在mongoose中定义的数据模型:

var timeTicketSchema = mongoose.Schema({
relatedObjectId : mongoose.Schema.ObjectId,
startTime : Date,
endTime : Date,
claimed: { type: Boolean, default : false },
claimedOn : Date,
locked : { type : Boolean, default : false },
lockedOn : Date,
bookingId : mongoose.Schema.ObjectId,
pricePerHour : Number
});

创建我以下列格式发布时,日期是从UTC开始的毫秒数:

{
"relatedObjectId": "561ee6bbe4b0f25b4aead5c8",
"startTime" : "1448550000000",
"endTime" : "1448551800000"
}

然而,当我在mongo中查看我创建的对象时,该对象没有正确的开始和结束时间:

{
"_id": {
    "$oid": "564cfb5e7c24fa1100991321"
},
"endTime": {
    "$date": "1970-01-01T00:00:00.000Z"
},
"startTime": {
    "$date": "1970-01-01T00:00:00.000Z"
},
"relatedObjectId": {
    "$oid": "561ee6bbe4b0f25b4aead5c8"
},
"locked": false,
"claimed": false,
"__v": 0
}

插入代码非常简单:

var timeTicket = new TimeTicket();
timeTicket.tutorId = tutorId;
timeTicket.startTime = new Date(startTime);
timeTicket.endTime = new Date(endTime);

timeTicket.save(function(err, timeTicket){
    if(err){
        return next(err, null);
    }

    return next(null, timeTicket);
});

在我的日期未进入的地方,我错过了什么?

1 个答案:

答案 0 :(得分:1)

您需要先将 parseInt() 的时间戳转换为int,然后再将其转换为日期:

var timeTicket = new TimeTicket();
timeTicket.tutorId = tutorId;
timeTicket.startTime = new Date(parseInt(startTime));
timeTicket.endTime = new Date(parseInt(endTime));

timeTicket.save(function(err, timeTicket){
    if(err){
        return next(err, null);
    }

    return next(null, timeTicket);
});