javascript - 有没有办法让 Mongoose 在 JS 端将 `Date` 类型转换为数字(时间戳)?

标签 javascript mongoose

在 Mongoose 中,Date 模式类型正是我想要的,除了一件事:在 javascript 端(在 mongodb 中没有)它获取/设置 Date 字段值的实例。

是否有一个选项或其他模式类型,这将允许它设置/获取 number 标量类型(就像我在做 const val = Number(doc.dateField) ),同时仍将其作为 mongodb 中的 ISODate 保留?

我开始为此创建一个自定义 Mongoose 模式类型,但如果有一个原生 Mongoose 选项/类型,我会更喜欢。

更新 - 这是一个显示我想要的代码示例:

const docSchema = new Schema({dateField: Date}})
const Doc = mongoose.model('Doc', docSchema)
// ...
const doc = Doc.findOne(...)

typeof doc.dateField // I want this to be number, without conversion from my side

最佳答案

为架构中的dateField添加getset

const docSchema = new Schema({
  dateField: {
    type: Date,
    get: (value: Date) => {
      return value.getTime();
    },
    set: (value: number) => {
      return new Date(value);
    }
  }
})

关于javascript - 有没有办法让 Mongoose 在 JS 端将 `Date` 类型转换为数字(时间戳)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52961108/

相关文章:

javascript - 将金额从 px 更改为基于百分比

javascript - 更改不同页面上的内容

javascript - 模拟同步 XmlHttpRequest

node.js - 扩展 mean.io 的用户包

node.js - 了解node Angular Express和mongo之间的通信

node.js - mongoose 预保存 - 检查用户名是否被占用

JavaScript 优化

javascript - Mongoose/MongoDB - 更新子文档不起作用

javascript - Node.js 等待异步函数完成,然后继续执行其余代码

php - 如何从 jQuery UI 对话框返回用户输入