2014-05-12 39 views
0

每當我有一個數組的元素具有潛在架構的架構時,每當我嘗試用空數組作爲值更新文檔時,都會收到一個錯誤。 如何在不出現此錯誤的情況下爲這些數組元素提供模式?如何將具有空數組的文檔更新爲屬性?

實施例架構:

tags: { type: [String], "default": [] } 
//or 
tags:[ {type:String} ] 

實施例要求:

MyModel.findOneAndUpdate({something:true},{tags:[]},callback); 

例錯誤:

[TypeError: Cannot read property 'schema' of undefined] 

我的環境:

  • 節點0.10.6
  • 的MongoDB 2.4.4
  • 貓鼬3.8.9
+0

我用節點0.10.26和Mongo 2.4.10和Mongoose 3.8.2,使用@Neil Lunn下面的代碼複製了這個。 –

回答

0

不能說同樣的基本原理產生相同的結果:

var mongoose = require("mongoose"); 

var Schema = mongoose.Schema; 

mongoose.connect('mongodb://localhost/test'); 

var exampleModel = new Schema({ 
    something: Boolean, 
    tags: { type: [String], default: [] } 
}); 

var MyModel = mongoose.model('Model', exampleModel); 

MyModel.findOneAndUpdate(
    { something: true }, 
    { tags: [] }, 
    { upsert: true }, 
    function(err, doc) { 
    console.log(doc) 
    } 
); 

而這給了我一個結果:

{ _id: 5370b44e718592ba9206979c, something: true, tags: [] } 
+0

嗯,當我運行精確的代碼複製/粘貼到節點repl添加err到console.log,我收到上面提到的同樣的錯誤。我使用的是Mongo 2.4.4,Mongoose 3.8.9和節點0.10.6。 – bendalton

+0

@bendalton我剛把你的確切版本複製到一個虛擬機上,我不能重複這個。您的節點和MongoDB版本都比較舊,但仍然沒有區別。你必須在你的代碼中做別的事情,你不在這裏說明。 –

+0

謝謝你看這個。我不能爲我的生活弄清楚還有什麼可能會干擾。我從字面上輸入節點;並複製/粘貼您的代碼。我還會與我辦公室的其他人員進行覈對。任何人都可以獨立驗證我們的結果嗎? – bendalton

相關問題