一尘不染

将Mongo存储的日期转换为自Unix时代加载后的毫秒数?

node.js

我正在将Mongoose&Node.js用于我的Web服务器。

作为我的一个文档架构的一部分,我有一个“时间戳”字段。模式中的这一行是: timestamp: { type: Date, default: Date.now }

这样可以很好地工作,并允许我基于时间戳检索文档,但是,该格式另存为ISODate格式,如下所示:http
://docs.mongodb.org/manual/core/document/#date ,如下所示:

"timestamp":"2013-04-04T19:31:38.514Z"

我对此不介意,但是我将其原样发送给客户端。这意味着我必须先在客户端使用Date.parse()才能进行比较操作。

有什么方法可以将日期存储为整数,或者在检索日期时将其自动转换为整数?

我有什么理由应该保留它的状态,只在客户端处理它?

提前致谢。


阅读 303

收藏
2020-07-07

共1个答案

一尘不染

您可以在架构上将数字毫秒版本添加timestamp虚拟属性:

schema.virtual('timestamp_ms').get(function() {
  return this.timestamp.getTime();
});

然后,可以toObject通过模式上的选项启用虚拟字段包含在模型实例的调用中:

var schema = new Schema({
  timestamp: Date
}, {
  toObject: { getters: true }
});
2020-07-07