Полное руководство по использованию типов данных Enum в моделях Sequelize

Sequelize — это популярная библиотека объектно-реляционного сопоставления (ORM) для Node.js, которая позволяет взаимодействовать с базами данных с помощью JavaScript. Одной из мощных функций, предоставляемых Sequelize, является возможность определять типы данных Enum в определениях вашей модели. В этой статье мы рассмотрим, как использовать типы данных Enum в моделях Sequelize, а также обсудим различные методы и примеры кода.

  1. Определение типов данных Enum:
    Чтобы определить тип данных Enum в модели Sequelize, вы можете использовать свойство DataTypes.ENUM. Вот пример:
const { DataTypes } = require('sequelize');
const User = sequelize.define('User', {
  status: {
    type: DataTypes.ENUM('active', 'inactive', 'pending'),
    allowNull: false
  }
});
  1. Получение значений перечисления.
    Чтобы получить возможные значения типа данных Enum, вы можете использовать свойство Model.rawAttributes. Вот пример:
const enumValues = User.rawAttributes.status.values;
console.log(enumValues); // ['active', 'inactive', 'pending']
  1. Проверка значений перечисления.
    Sequelize обеспечивает встроенную проверку значений перечисления. Вы можете заставить определенный столбец принимать только определенные значения Enum, используя свойство validate. Вот пример:
const User = sequelize.define('User', {
  status: {
    type: DataTypes.ENUM('active', 'inactive', 'pending'),
    allowNull: false,
    validate: {
      isIn: [['active', 'inactive', 'pending']]
    }
  }
});
  1. Запрос по значениям Enum.
    Вы можете запросить модели Sequelize на основе значений Enum, используя метод Model.findAll. Вот пример:
const activeUsers = await User.findAll({ where: { status: 'active' } });
console.log(activeUsers);
  1. Обновление значений перечисления.
    Чтобы обновить значение Enum в модели Sequelize, вы можете просто присвоить новое значение свойству и сохранить экземпляр модели. Вот пример:
const user = await User.findOne();
user.status = 'inactive';
await user.save();

Перечисления в моделях Sequelize предоставляют удобный способ определения и управления ограниченным набором значений для определенного столбца. В этой статье мы рассмотрели основы использования типов данных Enum в моделях Sequelize, включая определение типов данных Enum, получение значений, проверку входных данных, запросы и обновление значений Enum.

Используя возможности типов данных Enum в Sequelize, вы можете обеспечить согласованность данных и применить заранее определенные значения в столбцах базы данных.