Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我会得到;无法调用doValidate of undefined";使用Mongoose.js保存模型时?_Javascript_Mongodb_Node.js_Mongoose - Fatal编程技术网

Javascript 为什么我会得到;无法调用doValidate of undefined";使用Mongoose.js保存模型时?

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

请有人帮我解释一下我在使用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);
                });

我看不出我做错了什么,错误信息虽然很清楚,但对我帮助不大

顺序应该很重要。如果您在将模式附加到模型之前定义了
模型
,则您需要处理正确的对象

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-你的第一句话:“……我试图保存一个不存在的字段”让我检查了发送的数据,我注意到字段名中有一个拼写错误,当修复后,它会将所有内容整理出来!太棒了,刘易斯!这是我第一次选择答案。很高兴我能帮忙!