2012-12-25 31 views
0

我正在與節點/快遞/貓鼬一個博客,我不斷收到此錯誤:貓鼬對於Node.js的錯誤對象有沒有方法驗證

/Users/Ari/Sites/Amateur Dev/node_modules/mongoose/lib/schema/documentarray.js:94 doc.validate(function (err) { ^ TypeError: Object # has no method 'validate' at DocumentArray.doValidate (/Users/Ari/Sites/Amateur Dev/node_modules/mongoose/lib/schema/documentarray.js:94:13) at DocumentArray.doValidate (/Users/Ari/Sites/Amateur Dev/node_modules/mongoose/lib/schema/documentarray.js:102:9) at DocumentArray.SchemaType.doValidate (/Users/Ari/Sites/Amateur Dev/node_modules/mongoose/lib/schematype.js:601:22) at DocumentArray.doValidate (/Users/Ari/Sites/Amateur Dev/node_modules/mongoose/lib/schema/documentarray.js:73:35) at Document.validate.err (/Users/Ari/Sites/Amateur Dev/node_modules/mongoose/lib/document.js:911:9) at process.startup.processNextTick.process._tickCallback (node.js:244:9)

我試圖卸載貓鼬改變我的package.json與「mongoose」:「git://github.com/LearnBoost/mongoose.git」並做npm install但它仍然發生。

讓我知道如果你需要更多的信息

回答

4

首先猜測是你的架構定義的子文檔的數組,貓鼬預計陣列始終只包含貓鼬模型實例,但你的代碼是把別的東西在裏面,可能是一些普通的javascript對象而不是mongoose模型實例,它們包含一個代表基礎mongodb文檔的_doc屬性。

您只需將"mongoose": "3.5.x"放入您的package.json中,而不是完整的URL。

+0

你是完全正確的。我正在使用一個數組。 –

+0

我不明白。我的陣列中不能有正常的貓鼬無模型對象? –

+1

您的貓鼬模型必須符合架構。如果你想允許數組中的異構對象類型,你可以使用'[mongoose.Schema.Types.Mixed]',但是如果你的模式聲明數組包含'[SomeOtherSchema]'等其他模型,那麼貓鼬只需要SomeOtherModel實例在那個陣列中。 –