我有以下模式:
const doctorSchema = new mongoose.Schema(
{
specialty: {
type: String,
required: false
},
subspecialty: {
type: String,
required: false
}
}
医生可以有单一的专业。例如,医生可以是心脏病专家或神经科医生。
医生可以有单一的亚专科,但这取决于原来的专科。例如,神经科医生可以在神经危重症护理中有一个亚专科,但心脏病专家不能在神经危重症护理中有一个亚专科。
我正在尝试在模式中建模。我们可以为专业创建一个模式:
enum specialty {
cardiologist = 'cardiologist',
neurologist = 'neurologist'
}
有了这个,我如何为每个专业的子专业添加枚举?换句话说,我想添加一个只属于神经科医生的亚专科列表,一个只属于心脏病专家的列表,等等。
Mongoose有几个内置验证器。
-
所有SchemaTypes都有内置的必需验证器。所需的验证器使用SchemaType的checkRequired()函数确定值是否满足所需的验证器。
-
数字有最小和最大验证器。
-
字符串有enum、match、minlength和maxlength验证器。
对于您的情况,您可以这样做
const doctorSchema = Schema({
_id: Schema.Types.ObjectId,
specialty: { type: string, required: true },
subspecialty: {
type: string,
required: function() {
if(this.specialty === "neurologist"){
return {
enum : ['neurologist-sub-list','neurologist-sub-list2'],
default: 'neurologist-sub-list',
message: '{VALUE} is not supported'
}
}
}
}
});
你可以在if else块中完成剩下的部分如果专科医生不满意