我试图在mongoose模型中使用moment(new Date()。toISOString() 如下图所示
var mongoose = require('mongoose');
var uniqueValidator = require('mongoose-unique-validator');
Schema = mongoose.Schema;
var moment = require('moment');
// https://www.npmjs.com/package/mongoose-unique-validator
var categorySchema = new mongoose.Schema(
{
CatId:{ type: Number, required: true, unique: true },
Name : { type: String, required: true, unique: true },
Description : String,
Is_Active:Number,
Db_Created_TimeStamp:{type:Date,default: moment(new Date().toISOString())},
Db_Updated_TimeStamp:{type:Date,default:moment(new Date().toISOString())},
},{collection: "Categories"})
categorySchema.plugin(uniqueValidator);
mongoose.model('Categories',categorySchema);
当数据插入mongodb时,它总是显示相同的时间
不确定我是否遗漏了一些东西
这样做的想法是获得包含毫秒的时间戳
{
"_id" : ObjectId("5a163a14ed910b1279d7ca3f"),
"Is_Active" : NumberInt(1),
"Description" : "spo22rt",
"Name" : "spo22rt",
"CatId" : NumberInt(2),
"Db_Updated_TimeStamp" : ***ISODate("2017-11-23T03:01:25.349+0000"),
"Db_Created_TimeStamp" : ISODate("2017-11-23T03:01:25.346+0000"),***
"__v" : NumberInt(0)
}
{
"_id" : ObjectId("5a163a2ced910b1279d7ca40"),
"Is_Active" : NumberInt(1),
"Description" : "spossss22rt",
"Name" : "spo22rsst",
"CatId" : NumberInt(1),
"Db_Updated_TimeStamp" : **ISODate("2017-11-23T03:01:25.349+0000"),
"Db_Created_TimeStamp" : ISODate("2017-11-23T03:01:25.346+0000"),
"__v" : NumberInt(0)**
}
这里我插入的第一条记录有时间2017-11-23T03:01:25.349 + 0000
3分钟后,我插入了第二条记录,但仍然在db
中同时插入2017-11-23T03:01:25.349 + 0000
我正在上午8:40尝试插入 但我不确定那时是什么时候03:01:25
我遗漏了一些基础知识我认为差不多花了一天时间来理解,但没有任何线索可以理解发生的事情请帮助我理解这个
答案 0 :(得分:0)
当default
设置为某个值时,该值将在应用启动时设置,并且首先require
架构。在这种情况下,默认值在应用启动时变为new Date().toISOString()
的值。
将default
设置为一个函数,因此该函数运行并在创建新模型实例时返回当前日期。
Db_Created_TimeStamp: {
type: Date,
default: ()=> new Date().toISOString()
},
Db_Updated_TimeStamp: {
type: Date,
default: ()=> new Date().toISOString()
},
Mongoose确实使用timestamps
option提供“免费”字段:
var thingSchema = new Schema({..}, { timestamps: { createdAt: 'created_at' } });
var Thing = mongoose.model('Thing', thingSchema);
var thing = new Thing();
thing.save(); // `created_at` & `updatedAt` will be included
答案 1 :(得分:0)
或者,您可以使用:
default: new Date().toISOString
不调用该函数,它与:
default: ()=> new Date().toISOString()