我在这样的nodejs中有一个带有mongoose的用户模式
userschema = mongoose.Schema({
org: String,
username: String,
fullname: String,
password: String,
email: String
});
除非有时我需要添加更多字段。
主要问题是:我可以在monogoose架构中使用可选字段吗?
答案 0 :(得分:37)
除可选(默认)和必需外,还可以根据一个或多个其他字段有条件地要求字段。
例如,仅在存在电子邮件时才需要密码:
var userschema = mongoose.Schema({
org: String,
username: String,
fullname: String,
password: {
type: String,
required: function(){
return this.email? true : false
}
},
email: String
});
答案 1 :(得分:34)
默认情况下,mongoose架构中的所有字段都是可选的(当然除了_id
之外)。
只有在required: true
添加到其定义时才需要字段。
因此,请将您的架构定义为所有可能字段的超集,并将required: true
添加到所需的字段中。