为什么Mongoose createdAt / updatedAt输出错误的时间(只返回当前时间而不是db中的时间)

时间:2017-03-28 09:07:04

标签: node.js mongodb

我的数据库中存储的数据是:

{
    "_id" : ObjectId("58da135cfc80bc44f7653fd4"),
    "updatedAt" : ISODate("2017-03-28T08:00:59.541Z"),
    "createdAt" : ISODate("2017-03-28T07:40:12.742Z"),
    "name" : "hello",
    "delete" : false,
    "enabledPlugins" : [ 
        ObjectId("58c24f65b363502f907738f9")
    ],
    "__v" : 0
}

我的架构像:

const mongoose = require('./db');
const { Schema } = mongoose;

const templateSchema = new Schema({
  name: { type: String, index: true, unique: true },
  enabledPlugins: [
    { type: Schema.Types.ObjectId }
  ],
  delete: { type: Boolean, default: false }
}, {
  timestamps: true
});

const Template = mongoose.model('Template', templateSchema);

module.exports = Template;

但是当我想获取模板时,我得到了错误的时间戳:

exports.getAllTemplates = async function() {
  return await Template.aggregate(
    { $match: { delete: false } },
    { $project: { id: '$_id', _id: 0, name: 1, enabledPlugins: 1, createdAt: 1 } }
  );
};

结果如:

[
  {
    "createdAt": "2017-03-28T17:04:30.502+08:00",
    "name": "hello",
    "enabledPlugins": [
      "58c24f65b363502f907738f9"
    ],
    "id": "58da135cfc80bc44f7653fd4"
  }
]

我之前发现toJSON,输出错误。我没有使用任何插件。所有日期类型都有同样的问题。

1 个答案:

答案 0 :(得分:0)

谢谢,问题是我重写了Date.prototype.toISOString