2014-07-24 69 views
18

我有貓鼬在類似的NodeJS這貓鼬模式可選字段

userschema = mongoose.Schema({ 
    org: String, 
    username: String, 
    fullname: String, 
    password: String, 
    email: String 
}); 

除了有時我需要添加一些更多的字段用戶模式。

主要問題是:我可以在monogoose模式中有可選字段嗎?

回答

31

默認情況下,貓鼬模式中的所有字段都是可選的(當然除了_id)。

只有在將required: true添加到其定義中時,才需要該字段。

因此,將您的模式定義爲所有可能字段的超集,並將required: true添加到所需的字段中。

+2

是否有可能設置'要求:當且僅當第三場已'需要一對夫婦領域的TRUE':TRUE'?這種用例很常見......例如,只有'isContractor'是必填字段時才需要'hourlyRate'和'endDate'。 –

19

除了可選(默認)和需要,現場也可以是有條件需要,基於一個或多個其他字段。

例如,需要密碼,只有當電子郵件存在:

var userschema = mongoose.Schema({ 
    org: String, 
    username: String, 
    fullname: String, 
    password: { 
     type: String, 
     required: function(){ 
      return this.email? true : false 
     } 
    }, 
    email: String 
});