首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在猫鼬中创建依赖于另一个枚举的枚举?

如何在猫鼬中创建依赖于另一个枚举的枚举?
EN

Stack Overflow用户
提问于 2022-11-14 06:13:00
回答 1查看 16关注 0票数 0

我有以下模式:

代码语言:javascript
复制
const doctorSchema = new mongoose.Schema(
{
    specialty: {
        type: String,
        required: false
    },
    subspecialty: {
        type: String,
        required: false
    }
}

医生可以有一个单一的专业。例如,医生可以是心脏病专家,也可以是神经学家。

医生可以有一个子专科,但这取决于原来的专业。例如,神经科医生可以在神经危重症护理方面有一个亚专业,但心脏病专家不能在神经危重症护理方面有一个亚专业。

我试图在模式中对此进行建模。我们可以为专业创建一个模式:

代码语言:javascript
复制
enum specialty {
    cardiologist = 'cardiologist',
    neurologist = 'neurologist'
}

在这种情况下,如何为每个专业添加一个子专业的枚举?换句话说,我想增加一个只属于神经科医生的亚科的列表,一个只属于心脏科医生的列表,等等。

EN

回答 1

Stack Overflow用户

发布于 2022-11-14 06:48:04

猫鼬有几个内置的验证器。

  • All SchemaTypes有所需的内建验证器。所需的验证器使用SchemaType的checkRequired()函数来确定该值是否满足所需的验证器.

  • 数字有min和max验证器。

  • 字符串具有枚举、匹配、最小长度和最大长度验证器。

对于你的案子,你可以做这样的事情

代码语言:javascript
复制
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块中完成剩余的部分,在该块中,specailty不能满足神经学家的要求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74427568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档