簡體   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