Проверяет понимание того, как Sequelize инициализирует подключение к базе данных и управляет пулом соединений, что важно для корректной работы ORM в Node.js-приложениях.
Sequelize — это ORM для Node.js, которая абстрагирует работу с реляционными базами данных. Подключение к базе данных в Sequelize начинается с создания экземпляра класса Sequelize. В конструктор передаются параметры подключения: имя базы данных, имя пользователя, пароль и объект с настройками (хост, порт, диалект, параметры пула соединений и логирования).
Самый простой способ — передать параметры напрямую или через URI. Sequelize поддерживает диалекты: postgres, mysql, mariadb, sqlite, mssql.
const { Sequelize } = require('sequelize');
// Вариант 1: параметры по отдельности
const sequelize = new Sequelize('mydb', 'user', 'pass', {
host: 'localhost',
port: 5432,
dialect: 'postgres',
pool: { max: 5, min: 0, idle: 10000 }
});
// Вариант 2: через URI
const sequelize2 = new Sequelize('postgres://user:pass@localhost:5432/mydb');
При создании экземпляра Sequelize не открывает физическое соединение сразу. Вместо этого создаётся пул соединений (по умолчанию через библиотеку sequelize-pool). Реальные соединения устанавливаются по мере необходимости — при выполнении первого запроса. Это экономит ресурсы и позволяет приложению стартовать быстрее.
Чтобы убедиться, что параметры корректны и база доступна, используют метод authenticate(). Он выполняет простой запрос к базе и выбрасывает ошибку при неудаче.
async function connect() {
try {
await sequelize.authenticate();
console.log('Connection established');
} catch (err) {
console.error('Unable to connect:', err);
}
}
connect();
Для корректного завершения работы приложения пул соединений нужно закрыть методом sequelize.close(). Это освобождает все активные соединения и предотвращает утечки.
await sequelize.close();
Итог: Sequelize открывает соединение через конструктор с параметрами подключения, использует ленивую инициализацию и пул соединений, а для проверки и закрытия предусмотрены методы authenticate() и close(). Такой подход удобен для приложений с переменной нагрузкой, где важно эффективно управлять ресурсами базы данных.
Уровень
Рейтинг:
4
Сложность:
3
Навыки
Node.js
Postgres
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию