Node.js 我可以拥有依赖于值的自定义Sequelize验证器吗?

Node.js 我可以拥有依赖于值的自定义Sequelize验证器吗?,node.js,validation,sequelize.js,Node.js,Validation,Sequelize.js,在我的模型中,我有 level: { type: DataTypes.ENUM('state', 'service-area'), allowNull: false, validate: { isIn: { args: [ ['state', 'service-area'] ], msg: 'level should be one of state,service-area'

在我的模型中,我有

  level: {
    type: DataTypes.ENUM('state', 'service-area'),
    allowNull: false,
    validate: {
      isIn: {
        args: [
          ['state', 'service-area']
        ],
        msg: 'level should be one of state,service-area'
      }
    }
  },
      assignedStates: {
        type: DataTypes.ARRAY(DataTypes.STRING),
        allowNull: true
      },
      assignedServiceAreas: {
        type: DataTypes.ARRAY(DataTypes.STRING),
        allowNull: true
      },
如果
level
state
,则
assignedStates
不应为空,我正在尝试添加一个验证器。我该怎么做呢?

您可以使用。 第三个参数允许您验证整个模型:

const Levels={
州:'州',
服务区:“服务区”
}
const Location=sequelize.define(
“地点”{
级别:{
类型:DataTypes.ENUM(…对象.值(级别)),
allowNull:错,
验证:{
isIn:{
args:[对象值(级别)],
msg:“级别应为状态、服务区域之一”
}
}
},
被转让国:{
类型:DataTypes.ARRAY(DataTypes.STRING),
阿洛诺:是的
},
指定服务区:{
类型:DataTypes.ARRAY(DataTypes.STRING),
阿洛诺:是的
}
}, {
验证:{
已分配值notnul(){
//这里的“this”是对整个对象的引用。
//因此,您可以应用任何验证逻辑。
if(this.level==Levels.State&&!this.assignedStates){
抛出新错误(
“当级别为“状态”时,assignedStates不应为null”
);
}
if(this.level==Levels.ServiceArea&&!this.assignedServiceAreas){
抛出新错误(
“当级别为“服务区域”时,assignedSerivceAreas不应为空”
);
}
}
}
}
);