有人可以帮助尝试使用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);
});
我没有看到我做错了什么,错误信息虽然明确,但对我帮助不大。
答案 0 :(得分:0)
订单应该很重要。如果在将模式附加到模型之前定义models
,那么就要处理正确的对象。
var schema = new Schema(...);
mongoose.model('ModelName', mySchema)
var models = {
"foo": mongoose.model('ModelName')
}
var xyz = new models['foo']();
xyz.save();
关于错误消息,mongoose在构建中有一个验证系统,所以每当你保存它时,它都会验证。默认情况下,没有验证规则,因此它什么都不做。再次看起来你试图保存的模型对象缺少某些东西,可能是模式,也许是验证代码。
答案 1 :(得分:0)
通常当我得到那个错误时,因为我试图保存一个不存在的字段,也许是因为我改变了一个表单或其他东西。
Mongo自动创建ObjectIds。您是否尝试删除该字段并查看会发生什么?