使用 new Date() 使用 createdAt 变量定义 Mongoose Schema 不起作用
Defining Mongoose Schema with createdAt variable using new Date() doesnt work
我是 MERN 堆栈的新手,在我的服务器端我创建了一个 createRecord 函数,如下所示:
export const createRecord = async (req, res) => {
const { person_name, person_position, person_level } = req.body;
const newRecordItem = new RecordItem({
person_name,
person_position,
person_level,
});
据我了解,newRecordItem 创建了一个 RecordItem 对象,它是一个猫鼬模型,如下所示:
const itemSchema = mongoose.Schema({
person_name: String,
person_position: String,
person_level: String,
createdAt: {
type: Date,
default: new Date(), //this only returns one specific time which is server start time
},
});
var RecordItem = mongoose.model("recorditem", itemSchema);
在这个结构中,当我创建一个新记录时,它的 created_At 变量总是 returns 当服务器为新创建的记录启动时而不是实际创建时。
example
我对此的解决方案,只需在 createRecord 函数中发送日期值并删除架构中的默认日期值。但是为什么模式在上面的第一个结构中只有 returns 一次值。
这按预期工作:
export const createRecord = async (req, res) => {
const { person_name, person_position, person_level } = req.body;
const createdAt = new Date();
const newRecordItem = new RecordItem({
person_name,
person_position,
person_level,
createdAt,
});
架构:
const itemSchema = mongoose.Schema({
person_name: String,
person_position: String,
person_level: String,
createdAt: Date,
});
定义字段后,尝试在架构中使用 timestamps
。
const itemSchema = mongoose.Schema({
person_name: String,
person_position: String,
person_level: String,
},{timestamps:true});
var RecordItem = mongoose.model("recorditem", itemSchema);
有几种方法可以保护 createdAt
- 时间戳:选项为真
createdAt: { type: Date, default: Date.now },
- itemSchema.pre('save', 函数(下一步) {
如果(!this.createdAt){
this.createdAt = 新日期();
}
下一个();
});
我是 MERN 堆栈的新手,在我的服务器端我创建了一个 createRecord 函数,如下所示:
export const createRecord = async (req, res) => {
const { person_name, person_position, person_level } = req.body;
const newRecordItem = new RecordItem({
person_name,
person_position,
person_level,
});
据我了解,newRecordItem 创建了一个 RecordItem 对象,它是一个猫鼬模型,如下所示:
const itemSchema = mongoose.Schema({
person_name: String,
person_position: String,
person_level: String,
createdAt: {
type: Date,
default: new Date(), //this only returns one specific time which is server start time
},
});
var RecordItem = mongoose.model("recorditem", itemSchema);
在这个结构中,当我创建一个新记录时,它的 created_At 变量总是 returns 当服务器为新创建的记录启动时而不是实际创建时。
example
我对此的解决方案,只需在 createRecord 函数中发送日期值并删除架构中的默认日期值。但是为什么模式在上面的第一个结构中只有 returns 一次值。
这按预期工作:
export const createRecord = async (req, res) => {
const { person_name, person_position, person_level } = req.body;
const createdAt = new Date();
const newRecordItem = new RecordItem({
person_name,
person_position,
person_level,
createdAt,
});
架构:
const itemSchema = mongoose.Schema({
person_name: String,
person_position: String,
person_level: String,
createdAt: Date,
});
定义字段后,尝试在架构中使用 timestamps
。
const itemSchema = mongoose.Schema({
person_name: String,
person_position: String,
person_level: String,
},{timestamps:true});
var RecordItem = mongoose.model("recorditem", itemSchema);
有几种方法可以保护 createdAt
- 时间戳:选项为真
createdAt: { type: Date, default: Date.now },
- itemSchema.pre('save', 函数(下一步) { 如果(!this.createdAt){ this.createdAt = 新日期(); } 下一个(); });