Model 如何使用OR(Op.OR/$OR)运算符为sequelize指定阶段应等于null或初级或高级?
如何使用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
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')
}
}
}
});