Какво е Sequelize?

Какво е Sequelize?
Photo by iMattSmart / Unsplash

Sequelize е ORM (Object-Relational Mapping) библиотека за Node.js, която улеснява взаимодействието между приложението и релационната база данни. Тя поддържа множество релационни СУБД като MySQL, PostgreSQL, SQLite и MSSQL.

ORM-ите работят като мост между релационните бази данни и обектно-ориентираните езици като JavaScript. Те позволяват да се работи с базата данни като с обекти, което улеснява създаването, четенето, обновяването и изтриването на данни от базата данни.

Sequelize предоставя лесен за използване API за създаване на модели (моделите представляват таблиците в базата данни), свързване към базата данни и изпълнение на заявки към базата данни. Тя също така предоставя функционалност за миграции, които улесняват управлението на схемата на базата данни при изменения в приложението.

Sequelize е много гъвкава библиотека и предоставя множество опции за конфигуриране и настройка на връзката с базата данни, както и за изпълнение на заявки. Тя също така предоставя функционалности като транзакции, заявки за агрегация на данни, валидация на данни и други, които я правят много полезна при работа с релационни бази данни в Node.js приложения.

Ето пример за създаване на модел в Sequelize за таблица "Users" в база данни MySQL:

const Sequelize = require('sequelize');

// създаване на връзка с базата данни
const sequelize = new Sequelize('database_name', 'username', 'password', {
  host: 'localhost',
  dialect: 'mysql'
});

// дефиниране на модела за таблица "Users"
const User = sequelize.define('User', {
  firstName: {
    type: Sequelize.STRING,
    allowNull: false
  },
  lastName: {
    type: Sequelize.STRING,
    allowNull: false
  },
  email: {
    type: Sequelize.STRING,
    allowNull: false,
    unique: true
  }
});

// създаване на таблицата "Users" в базата данни
User.sync()
  .then(() => console.log('Таблицата Users беше създадена успешно.'))
  .catch(err => console.error('Грешка при създаване на таблицата Users: ', err));

// експортиране на модела за използване в други модули
module.exports = User;

Този пример дефинира модела User за таблицата Users в базата данни, като задава три полета: firstName, lastName и email. Всяко поле е дефинирано като обект, който указва типа на данните и други свойства като allowNull (дали полето може да бъде празно) и unique (дали стойността на полето трябва да бъде уникална).

След дефинирането на модела, може да се извика методът sync(), който автоматично ще създаде таблицата Users в базата данни, ако тя все още не съществува. Този метод връща Promise, което може да се обработи с then() и catch() методите за да се уверите, че таблицата беше създадена успешно или да се открие грешка при създаването.

След като моделът е дефиниран и таблицата е създадена в базата данни, може да се използва моделът за извършване на различни операции като създаване, четене, обновяване и изтриване на записи в базата данни.