Как мне указать, что фаза должна быть равна нулю ИЛИ младшему или старшему, используя оператор или (Op.or / $ or) для продолжения? - PullRequest
0 голосов
/ 04 сентября 2018

Как указать, что фаза должна равняться нулю ИЛИ младшему или старшему с помощью оператора or (Op.or / $ or) для продолжения?

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' }],
    },
  },
});

1 Ответ

0 голосов
/ 05 сентября 2018

Я думаю, что вы можете достичь этого двумя способами:

Измените тип поля на ENUM:

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

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

phase: {
    type:   Sequelize.ENUM ,
    values: ['junior', 'senior'] ,
    defaultValue: null
}

Для более подробной информации: ЧИТАЙТЕ

OR

Установить проверку:

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')
            }
        }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...