mongoose/mongodb日期保存castError
当我从数据库中获取一个文档,然后立即保存它时,我遇到了这个错误。但是,在初始插入时它被接受,并且看起来日期字段是空的,即使它们是必需的 {stack:[Getter/Setter], 消息:“值“[object]”的强制转换到日期失败, 名称:“卡斯特罗”, 键入:“日期”, 价值: {毫秒:0, 秒:0,, 分钟:0,, 小时:0, 日期:21, 第周:38, 月份:8, 年份:2011} 这是失败的架构和查询代码:mongoose/mongodb日期保存castError,mongodb,node.js,mongoose,Mongodb,Node.js,Mongoose,当我从数据库中获取一个文档,然后立即保存它时,我遇到了这个错误。但是,在初始插入时它被接受,并且看起来日期字段是空的,即使它们是必需的 {stack:[Getter/Setter], 消息:“值“[object]”的强制转换到日期失败, 名称:“卡斯特罗”, 键入:“日期”, 价值: {毫秒:0, 秒:0,, 分钟:0,, 小时:0, 日期:21, 第周:38, 月份:8, 年份:2011} 这是失败的架构和查询代码: var Event = new Schema({ id :
var Event = new Schema({
id : { type: String, index: true }
, msg : { type: String, lowercase: true, trim: true }
, triggerOn : { type: Date, required: true }
, createdOn : { type: Date, required: true }
, triggered : { type: Boolean, required: true }
});
exports.pullAndUpdateTest = function(){
var Model = mongoose.model('Event');
Model.find({ triggered: false }, function (err, docs) {
if (err){
console.log(err);
return;
}
docs.forEach(function(doc, index, array){
//date both appear to be null here
console.log(doc.triggerOn); //=> null / prints blank
console.log(doc.createdOn); //=> null / prints blank
doc.triggered = true;
doc.save(function(err){ console.log(err)});
});
});
}
你用猫鼬定义你的模型了吗
var Model = mongoose.model('Event', Event);
如果应用程序中的任何位置都需要datejs(或者使用任何需要datejs的模块),则会出现这种情况。Date.js是一个非常酷的库,但是使用MongoDB时,默认实现将在Node.js应用程序中造成混乱。我建议你使用。您可以使用Date.js函数,但在调用任何Date.js函数之前,必须将
Date
值转换为Date.js对象
例如:
var safe_datejs = require('safe_datejs');
var today = new Date();
var unsafeToday = today.AsDateJs(); // Converting to Date.js object
var unsafeTomorrow = unsafeToday.clone().add({days:1}); // Work with Date.js a little
var tomorrow = unsafeTomorrow.AsRegularDate(); //converted back safe to be used with MongoDB
要更改区域性特定属性,请使用safe\u datejs.DateType.CultureInfo
更多信息:还发现了从未解决的确切问题最新版本的mongoose修复了此issueDate.js实际上非常适合在添加其他行为的同时保留原始日期模型。问题在于,Mongoose当前在对象上找到toObject方法时会跳过类型检查。有一个等待更正的拉取请求:。不再为true-mongoose的最新版本已修复。