我正在创建一个node.js REST api,它使用Mongoose从MongoDB读取数据,但是时间戳年份是用1970读取的
我的模特
last_updated: {
type: Date,
}
我的控制器
exports.listAllGlobalData = function(req, res) {
GlobalData.find({}).exec((err, data) => {
console.log(data)
if (err) return next(err);
res.json(data);
});
};
我在mongodb的数据:
last_updated : 1516538665
和json结果:
"last_updated": "1970-01-18T13:11:47.064Z"
所以时间似乎是正确的,但不知何故日期不应该是2018年。数据是只读的。
答案 0 :(得分:1)
尝试将Date.now
设为默认值:
last_updated: {
type: Date,
default: Date.now
}
从Mongoose
文档:“Date.now()
将当前的unix时间戳记作为数字返回。”
答案 1 :(得分:1)
毕竟,问题出在时间戳格式上,以秒为单位,而Date
(猫鼬使用的)期望在毫秒内解决。毕竟是微不足道的。
我最后使用SchemaType.prototype.set
on attribute with function as value,它检查了时间戳的长度,如果以秒为单位(较短),则将其乘以1000。
您也可以在填充模型之前执行此操作,但是这种方式无需每次都执行,除了为typeof Date
的Schema属性设置相同的键外。
也可以使用箭头功能来完成,例如:
set: v => Math.round(v)
我不知道这是否是最好的方法,也不知道在声明属性参数Schema.Types.Date
时是否可以添加此功能
我也无法使用钩子来捕获save
或update
之类的事件,因为我没有在此模型上调用任何这些方法