Node.js “Mongoose高级模式/动态”;“设置”;基于其他字段的字段

Node.js “Mongoose高级模式/动态”;“设置”;基于其他字段的字段,node.js,mongoose,dynamic,schema,Node.js,Mongoose,Dynamic,Schema,我正在尝试创建一个动态mongoose模式。 父模式是一个“接口”。这有两个字段:“类型”和“设置” 根据“类型”字段,我需要创建/分配/验证“设置”字段 常量枚举设置={ “RS232”:新猫鼬模式({ 波特率:{ 类型:数字, 必填项:true }, 数据位:{ 类型:数字, 默认值:8 }, 停止位:{ 类型:数字, 默认值:1 }, 平价:{ 类型:字符串, 枚举:[“无”、“偶数”、“标记”、“奇数”、“空格”], 默认值:“无” }, rtscts:{ 类型:布尔型, 默认值:fa

我正在尝试创建一个动态mongoose模式。 父模式是一个“接口”。这有两个字段:“类型”和“设置”

根据“类型”字段,我需要创建/分配/验证“设置”字段

常量枚举设置={
“RS232”:新猫鼬模式({
波特率:{
类型:数字,
必填项:true
},
数据位:{
类型:数字,
默认值:8
},
停止位:{
类型:数字,
默认值:1
},
平价:{
类型:字符串,
枚举:[“无”、“偶数”、“标记”、“奇数”、“空格”],
默认值:“无”
},
rtscts:{
类型:布尔型,
默认值:false
},
xon:{
类型:布尔型,
默认值:false
},
xoff:{
类型:布尔型,
默认值:false
},
哈尼:{
类型:布尔型,
默认值:false
}
}),
“以太网”:新的猫鼬模式({
主持人:{
类型:字符串,
必填项:true
},
端口:{
类型:数字,
必填项:true
},
路径:{
类型:字符串,
默认值:“/”
},
协议:{
类型:字符串,
要求:正确,
枚举:[“ws”、“http”、“tcp”、“udp”]
}
})

};
Hi@Marc不确定你是否认识Joi。如果没有,你可以在这里查看。它在基于另一个和一堆其他东西的值的验证字段中非常有用谢谢你的回复,我没有考虑过它。看起来不错,所以我可以创建一个hapi模式,并在mongoose模式上的自定义“设置”验证器中验证它!这对我来说是一个可以接受的解决方案,但我仍然怀疑像动态子模式这样的东西是否确实可行!任何困难,你可以让我知道,我可以张贴一个例子