Model 如何使用OR(Op.OR/$OR)运算符为sequelize指定阶段应等于null或初级或高级?

Model 如何使用OR(Op.OR/$OR)运算符为sequelize指定阶段应等于null或初级或高级?,model,sequelize.js,Model,Sequelize.js,如何使用OR(Op.OR/$OR)运算符为sequelize指定阶段应等于null或初级或高级 const Sequelize = require('sequelize'); const db = require('./_db'); const Student = db.define('student', { name: { type: Sequelize.STRING, allowNull: false, validate: { notEmpty: t

如何使用OR(Op.OR/$OR)运算符为sequelize指定阶段应等于null或初级或高级

const Sequelize = require('sequelize');
const db = require('./_db');

const Student = db.define('student', {
  name: {
    type: Sequelize.STRING,
    allowNull: false,
    validate: {
      notEmpty: true,
    },
    phase: {
      type: Sequelize.STRING,
      defaultValue: null,
      $or: [{ phase: null }, { phase: 'junior' }, { phase: 'senior' }],
    },
  },
});

我认为可以通过两种方式实现这一点:

将字段类型更改为枚举:

phase: {
    type: Sequelize.ENUM('junior', 'senior') ,
    defaultValue: null,
}

// ------------ OR -------------

phase: {
    type:   Sequelize.ENUM ,
    values: ['junior', 'senior'] ,
    defaultValue: null
}
const Student = db.define('student', {
    ...
    phase: {
        type: Sequelize.STRING,
        defaultValue: null,
    }
    ...
  } , {
    validate: {
        checkPhase() {
            if (!(this.phase === null || this.phase === 'junior' || this.longitude === 'senior')) {
                throw new Error('Phase value should be junior or senior')
            }
        }
    }
});
有关更多详细信息:

设置验证:

phase: {
    type: Sequelize.ENUM('junior', 'senior') ,
    defaultValue: null,
}

// ------------ OR -------------

phase: {
    type:   Sequelize.ENUM ,
    values: ['junior', 'senior'] ,
    defaultValue: null
}
const Student = db.define('student', {
    ...
    phase: {
        type: Sequelize.STRING,
        defaultValue: null,
    }
    ...
  } , {
    validate: {
        checkPhase() {
            if (!(this.phase === null || this.phase === 'junior' || this.longitude === 'senior')) {
                throw new Error('Phase value should be junior or senior')
            }
        }
    }
});