[英]Why do I get “cannot call doValidate of undefined” when saving a model using Mongoose.js?
有人可以帮忙尝试使用mongoose.js ORM解释我做错了什么,并为我提供一些解决问题的指导。
尝试使用mongoose.js orm保存模型时,出现错误:
无法调用未定义的方法“ doValidate”
我正在尝试使用以下架构保存对象:
var myEntity = new Schema({
objectId : ObjectId
,title : String
, decription : String
, ownerId : String
, start : {
something : {
// ...
}
//removed for brevity!
}
, end : {
something : {
// ...
}
//removed for brevity!
}
, useruid : String
, _created : { type : Date, "default": new Date()}
, _updated : { type : Date, "default": new Date()}
}
mongoose.model("MyEntity", MyEntity);
我已将模型放在容器中,以便可以通过以下方式访问它们:
var xyz = new models['whatever']();
容器对象如下所示:
var models = {
MyEntity : mongoose.model("MyEntity"),
};
我创建模型,并传入具有所有正确“映射”或属性的JSON对象:
var newEntity = new models.MyEntity(someObj);
然后下面的代码是我如何保存模型:
newEntity.save(function(error) {
if (error) {
console.log(error);
}
writePostEntityResponse(newEntity);
});
我看不到我在做什么错,错误消息虽然很清楚,但对我没有太大帮助。
顺序应该很重要。 如果在将架构附加到models
之前定义models
,那么您将处理正确的对象。
var schema = new Schema(...);
mongoose.model('ModelName', mySchema)
var models = {
"foo": mongoose.model('ModelName')
}
var xyz = new models['foo']();
xyz.save();
至于错误消息,猫鼬内置了一个验证系统,因此每当您保存它时,它将进行验证。 默认情况下,没有验证规则,因此不执行任何操作。 同样,您尝试保存的模型对象似乎丢失了某些内容,可能是架构,可能是验证代码。
, perhaps because I've altered a form or something. 通常,当我收到该错误时,这是因为 ,也许是因为我更改了表单或其他内容。
Mongo自动创建ObjectId。 您是否尝试过删除该字段并查看会发生什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.