2016-08-19 56 views
0

我正在構建一個插件,並需要爲其中一個子文檔集合字段指定屬性。有人提到statics這樣做的官方方式。所以,與其...如何指定貓鼬子文檔的模式屬性?

var familySchema = mongoose.Schema({ 
    surName : { type: String }, 
    members : { type: [ personSchema ], minLength: 1, maxLength: 10 } 
}); 

...這將是這...

var familySchema = mongoose.Schema({ 
    surName : { type: String }, 
    members : [ personSchema ] 
}); 
familySchema.static('minLength', 1); 
familySchema.static('maxLength', 10); 

我意識到沒有minLengthmaxLength。插件會處理這個。

我一直在尋找通過文檔,並找不到任何提及官方方式。一個人相對於另一個人有好處嗎?

回答

0

你是對的,沒有像minLength這樣的事情參考數組。你必須使用定製驗證

var validateFamilyLength = function (members) { 
    return members.length > 1 && members.length < 10; 
}; 

var familySchema = mongoose.Schema({ 
    surName : { type: String }, 
    members : { 
     type: [personSchema], 
     validate: [validateFamilyLength, 'Not valid members count'] 
    } 
}); 

但我強烈建議您使用裁判,而不是

var familySchema = mongoose.Schema({ 
    surName : { type: String }, 
    members : [{ 
     type: mongoose.Schema.ObjectId, 
     ref: 'Person', 
     validate: [validateFamilyLength, 'Not valid members count'] 
    }] 
}); 
+0

很抱歉的混亂。爲了清楚起見,我重新提出了這個問題。我試圖確定聲明這些屬性的_preferred_方法。 –