Освоение Sequelize: методы обработки «не нулевых» ограничений в вашей базе данных

В сегодняшней записи блога мы собираемся погрузиться в мир Sequelize, популярной библиотеки объектно-реляционного сопоставления (ORM) для Node.js. В частности, мы рассмотрим различные методы обработки ограничения «not null» в таблицах вашей базы данных с помощью Sequelize. Итак, пристегнитесь и приготовьтесь освоить Sequelize как профессионал!

Метод 1: использование свойстваallowNull
Один из способов обработки ограничения «not null» — использование свойства allowNullв Sequelize. По умолчанию для свойства установлено значение true, что означает, что столбец может принимать нулевые значения. Однако, если вы хотите применить ограничение «not null», вы можете установить для allowNullзначение falseпри определении столбца в вашей модели. Вот пример:

const User = sequelize.define('User', {
  name: {
    type: DataTypes.STRING,
    allowNull: false
  },
  // Other column definitions...
});

Метод 2: использование свойства проверки
Другой подход — использовать свойство validateв Sequelize. Это позволяет вам определять собственные функции проверки для значений столбцов. Выдавая ошибку, когда значение равно null, вы можете применить ограничение «not null». Давайте посмотрим, как это работает:

const User = sequelize.define('User', {
  email: {
    type: DataTypes.STRING,
    validate: {
      notNull: {
        msg: 'Email cannot be null.'
      }
    }
  },
  // Other column definitions...
});

Метод 3: использование проверки на уровне модели.
Sequelize также предоставляет возможность выполнять проверки на уровне модели. Это означает, что вы можете определить собственные функции проверки, которые проверяют несколько столбцов одновременно. Чтобы обеспечить соблюдение ограничения «not null», вы можете использовать эту функцию. Вот пример:

const User = sequelize.define('User', {
  name: {
    type: DataTypes.STRING
  },
  email: {
    type: DataTypes.STRING
  }
// Other column definitions...
}, {
  validate: {
    bothFieldsNotNull() {
      if (!this.name && !this.email) {
        throw new Error('Either name or email must be provided.');
      }
    }
  }
});

Метод 4: использование ограничений на уровне базы данных
В дополнение к методам, специфичным для Sequelize, вы также можете применить ограничение «not null» на уровне базы данных. Это гарантирует, что даже если Sequelize будет обойден, ограничение останется нетронутым. Этого можно добиться, выполняя необработанные SQL-запросы или используя инструменты миграции, такие как Sequelize CLI. Вот пример использования чистого SQL:

sequelize.query(`
  ALTER TABLE Users
  MODIFY COLUMN name VARCHAR(255) NOT NULL;
`);

В этой статье мы рассмотрели несколько методов обработки ограничения «not null» при работе с Sequelize. Мы рассмотрели такие методы, как использование свойств allowNullи validate, реализация проверок на уровне модели и применение ограничений на уровне базы данных. Применяя эти методы, вы можете обеспечить целостность своих данных и создавать более надежные приложения с помощью Sequelize.