Javascript 猫鼬预(验证)不起作用
我需要从这个日期字符串中保存一个真实的日期到DB。我以前用另一件事做过这件事,效果很好。只是不知道出了什么问题。this.date在MongoDB中打印这种字符串。“日期”:“2018年4月20日”,它还将默认值转换为realDate。另外,我也没有得到console.logJavascript 猫鼬预(验证)不起作用,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我需要从这个日期字符串中保存一个真实的日期到DB。我以前用另一件事做过这件事,效果很好。只是不知道出了什么问题。this.date在MongoDB中打印这种字符串。“日期”:“2018年4月20日”,它还将默认值转换为realDate。另外,我也没有得到console.log var mongoose = require("mongoose"); var Schema = mongoose.Schema; var attendanceSchema = new Schema({ date:
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var attendanceSchema = new Schema({
date: String,
absent: [{ type: Schema.Types.ObjectId, ref: "User" }],
realDate: { type: Date, default: new Date() }
});
attendanceSchema.pre("validate", function(next) {
var newDate = this.date;
this.realDate = new Date(newDate);
console.log("done");
next();
});
var Atten = mongoose.model("Attendance", attendanceSchema);
module.exports = Atten;
您的模式中有
date:String
,因此无论您做什么,它都将转换为什么。只需date:date
即可进行正确的铸造。或者您实际上是在问如何修复已存储为字符串的现有数据?另外,“4/20/2018”
不是ISO格式,因此无法正确转换。在转换为UTC之前,可能会假定为“本地时间”。我需要在DB中同时使用这两种时间作为字符串和日期。因此,我获取字符串date。并在将其保存到DB之前使用它创建一个日期,并将其分配给另一个字段名称realDate。@NeilLunn我使用w3schools并将其插入到他们的try-It编辑器中,转换后的日期很好。