当我从数据库中获取文档然后立即保存它时,我收到此错误。虽然它在初始插入时被接受,但看起来日期字段是空的,即使它们是必需的。
{stack:[Getter / Setter], 消息:'对象变为失败'[object Object]“', 名称:'CastError', 输入:'date', 值: {毫秒:0, 第二名:0, 分钟:0, 小时:0, 那天:21, 一周:38, 月:8, 年:2011}}
这是失败的架构和查询代码:
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)});
});
});
}
答案 0 :(得分:1)
如果您的应用程序中的任何位置需要datejs(或使用任何反过来需要datejs的模块),就会发生这种情况。
答案 1 :(得分:1)
Date.js是一个非常酷的库,但是在使用MongoDB时,默认实现会在Node.js应用程序中造成混乱。我建议你使用safe_datejs。您将能够使用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_datejs.DateType.CultureInfo
答案 2 :(得分:0)
您是否使用猫鼬定义了模型?
var Model = mongoose.model('Event', Event);