You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 23:04:57