Javascript 为什么我会得到;无法调用doValidate of undefined";使用Mongoose.js保存模型时?
请有人帮我解释一下我在使用mongoose.js ORM时做错了什么,并给我一些解决问题的指导 问题 尝试使用mongoose.js orm保存模型时,我收到一个错误: 无法调用未定义的方法“doValidate” 模式定义 我正在尝试使用以下架构保存对象:Javascript 为什么我会得到;无法调用doValidate of undefined";使用Mongoose.js保存模型时?,javascript,mongodb,node.js,mongoose,Javascript,Mongodb,Node.js,Mongoose,请有人帮我解释一下我在使用mongoose.js ORM时做错了什么,并给我一些解决问题的指导 问题 尝试使用mongoose.js orm保存模型时,我收到一个错误: 无法调用未定义的方法“doValidate” 模式定义 我正在尝试使用以下架构保存对象: var myEntity = new Schema({ objectId : ObjectId ,title : String , decription : Strin
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);
});
我看不出我做错了什么,错误信息虽然很清楚,但对我帮助不大 顺序应该很重要。如果您在将模式附加到模型之前定义了
模型
,则您需要处理正确的对象
var schema = new Schema(...);
mongoose.model('ModelName', mySchema)
var models = {
"foo": mongoose.model('ModelName')
}
var xyz = new models['foo']();
xyz.save();
至于错误消息,mongoose在构建中有一个验证系统,所以无论何时保存它,它都会进行验证。默认情况下,没有验证规则,因此它不执行任何操作。再次,您试图保存的模型对象似乎丢失了一些东西,可能是架构,可能是验证代码。通常,当我出现错误时,这是因为我试图保存一个不存在的字段,可能是因为我更改了表单或其他内容
Mongo自动创建objectid。你有没有试过移除那个字段,看看会发生什么?@Lewis这可能是一件容易忘记的事情!就在那里,通过我更新的帖子,你可以看到我访问模型的方式可能不太标准!感谢您迄今为止的帮助:)@Lewis顺序很重要,在初始化
模型之前,您应该使用模式定义模型
@Raynos-不过,新模式>mongoose.models(…)>新模型(…)>xyz.save():对吗?@Raynos。我相信这就是我正在做的。我将模型容器导出为一个模块,并调用:var xyz=newmodels['foo']();xyz.save();还有什么想法吗?谢谢John-你的第一句话:“……我试图保存一个不存在的字段”让我检查了发送的数据,我注意到字段名中有一个拼写错误,当修复后,它会将所有内容整理出来!太棒了,刘易斯!这是我第一次选择答案。很高兴我能帮忙!