如何在Node.js和Sequelize中实现类枚举的字符串自定义验证
如何为Sequelize模型字段添加非枚举的取值范围验证
现有模型字段定义:
type: { type: DataTypes.STRING, defaultValue: "Normal" }
要求为type字段添加验证,仅允许取值为"Normal"或"Installment",且不使用枚举类型,具体实现如下:
实现方法
方法1:使用内置isIn验证器
Sequelize提供了内置的isIn验证规则,直接配置即可满足需求:
type: { type: DataTypes.STRING, defaultValue: "Normal", validate: { isIn: { args: [["Normal", "Installment"]], msg: "type字段只能是'Normal'或'Installment'" } } }
当字段值不在指定数组内时,会抛出配置的错误信息,框架会自动处理验证逻辑。
方法2:自定义验证函数
如果需要更灵活的校验逻辑(比如后续要加额外判断),可以写自定义验证函数:
type: { type: DataTypes.STRING, defaultValue: "Normal", validate: { checkAllowedType(value) { const allowed = ["Normal", "Installment"]; if (!allowed.includes(value)) { throw new Error("type字段仅支持'Normal'和'Installment'两种取值"); } } } }
自定义函数接收当前字段值作为参数,手动判断是否符合要求,不符合则抛出错误。
内容的提问来源于stack exchange,提问作者Hiren Kalariya
相关产品推荐
相关产品推荐

