繁体   English   中英

使用Mongoose.js保存模型时,为什么会出现“无法调用未定义的doValidate”的信息?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM