Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 猫鼬预(验证)不起作用_Javascript_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Javascript 猫鼬预(验证)不起作用

Javascript 猫鼬预(验证)不起作用,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:

我需要从这个日期字符串中保存一个真实的日期到DB。我以前用另一件事做过这件事,效果很好。只是不知道出了什么问题。this.date在MongoDB中打印这种字符串。“日期”:“2018年4月20日”,它还将默认值转换为realDate。另外,我也没有得到console.log

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编辑器中,转换后的日期很好。