Sequelize - это ORM-библиотека для приложений на Node.js, которая осуществляет сопоставление таблиц в бд и отношений между ними с классами. При использовании Sequelize мы можем не писать SQL-запросы, а работать с данными как с обычными объектами. Причем Sequelize может работать с рядом СУБД - MySQL, Postgres, MariaDB, SQLite, MS SQL Server.
Более подробно про работу sequelize можно посмотреть в официальной документации. А в данном случае мы сосредаточимся на основных моментах работы с данными на примере взаимодействия с SQLite, поскольку SQLite не требует установки сервера и поддерживается из коробки.
Вначале установим пакет sequelize.
npm install --save sequelize
Для подключения к базе данных прежде всего необходимо создать объект Sequelize:
const Sequelize = require("sequelize"); const sequelize = new Sequelize("usersdb2", "root", "123456", { dialect: "mysql", host: "localhost" });
Для создания объекта sequelize используется функция Sequelize, которая принимает ряд параметров. Количество параметров может различаться в зависимости от используемой системы базы данных. Но в большинстве случаев, в частности, для СУБД, для которых требуется сервер (MySQL, PostgreSQL, MSSQL, Oracle, MariaDB) будут использовать следующие параметры. Первый параметр - имя базы данных. Второй параметр - логин к бд, третий параметр - пароль. Это обязательные параметры.
Кроме того, с помощью четвертого параметра мы можем задать ряд дополнительных опций конфигурации. Четвертый параметр представляет объект,
который имеет множество свойств. В данном случае используются только два. Первое свойство - dialect
указывает на диалект языка SQL, который используется в запросах -
в данном случае "mysql". Второе свойство host
представляет адрес, по которому запущен сервер. По умолчанию host
имеет значение "localhost", поэтому для подключения к локальной базе данных это свойство в принципе можно не указывать.
Для свойства dialect в зависимости от того, с какой СУБД предстоит работать, могут использоваться следующие значения:
mysql
mariadb
sqlite
postgres
mssql
oracledb
Для работы с SQLite также должен быть установлен пакет sqlite3:
npm install --save sqlite3
И при создании объекта Sequelize в параметрах указывается dialect: "sqlite"
:
const Sequelize = require("sequelize"); const sequelize = new Sequelize({ dialect: "sqlite", storage: "metanit.db" });
Кроме того, с помощью параметра storage
устанавливается путь к базе данных.
Для работы с MySQL также должен быть установлен пакет mysql2, работа с котором разбиралась в прошлой главе:
npm install --save mysql2
И при создании объекта Sequelize в параметрах указывается dialect: "mysql"
:
const Sequelize = require("sequelize"); const sequelize = new Sequelize("usersdb2", "root", "123456", { dialect: "mysql", host: "localhost" });
Для работы с MS SQL Server в проекте должен быть установлен пакет tedious:
npm install --save tedious
И при создании объекта Sequelize в параметрах указывается dialect: "mssql"
:
const Sequelize = require("sequelize"); const sequelize = new Sequelize("usersdb2", "sa", "123456", { dialect: "mssql", host: "localhost", port: "1433" });
Кроме диалекта в настройках конфигурации также указывается параметр host - адрес сервера и port. Если сервер запущен на порту 1433, то в принципе его необязательно указывать, так как этот порт Sequelize использует по умолчанию. Любой другой порт необходимо указывать.
При создании подключения к MSSQL Server мы можем столкнуться с рядом сложностей, которые вытекают в основном из конфигурации самого сервера. Прежде всего, нам надо убедиться, что запущенный экземпляр сервера принимает запросы по TCP. Для этого перейдем в панели управления к пункту Администрирование и затем выберем пункт Управление компьютером
В открывшейся вкладке перейдем к пункту Службы и приложения -> SQL Server Configuration Manager -> SQL Server Network Configuration и найдем нужный нам экземпляр сервера. Убедимся, что для включен параметр TCP/IP (то есть имеет значение "Enabled").
Для использования логина и пароля в MS SQL Server убедимся, что он настроен на смешанную аутентификацию. Для этого подключимся к серверу через SQL Server Managemen Studio и перейдем к свойствам сервера:
Затем в открывшемся окне на вкладке Security выбрем режим SQL Server and Windows Authentication mode.
После применения всех настроек перезапустим сервер.
И естественно перед подключением необходимо создать базу данных, с которой будет идти взаимодействие.
Для работы с СУБД Postgres также необходимо установить пакет pg:
npm install --save pg
И при создании объекта Sequelize в параметрах указывается dialect: "postgres"
:
const Sequelize = require("sequelize"); const sequelize = new Sequelize("usersdb2", "root", "123456", { dialect: "postgres" });
Все остальное взаимодействие с базой данных в большинстве случаев за некоторыми исключениями практически не зависит от конкретной СУБД. А это значит, что большую часть кода (если не весь код) мы можем использовать для подключения к разным СУБД.