Подробное руководство по использованию Sequelize с NestJS: изучение методов и примеров

В этой статье блога мы углубимся в сочетание NestJS, мощной платформы Node.js, и Sequelize, популярной библиотеки объектно-реляционного сопоставления (ORM). Мы рассмотрим различные методы и предоставим примеры кода, чтобы продемонстрировать, как эффективно интегрировать Sequelize с NestJS. Итак, приступим!

  1. Установка и настройка:

Прежде чем мы сможем начать использовать Sequelize с NestJS, нам необходимо настроить необходимые зависимости. Начните с установки Sequelize и необходимого драйвера базы данных, например Sequelize для PostgreSQL (npm install sequelize pg). Затем установите пакеты NestJS Sequelize (npm install @nestjs/sequelize sequelize-typescript). После завершения установки настройте модуль Sequelize в приложении NestJS.

  1. Определение модели:

Чтобы взаимодействовать с базой данных с помощью Sequelize, нам необходимо определить модели, представляющие таблицы базы данных. Вот пример простой модели User с декораторами Sequelize:

import { Table, Column, Model, DataType } from 'sequelize-typescript';
@Table
export class User extends Model<User> {
  @Column({
    type: DataType.INTEGER,
    primaryKey: true,
    autoIncrement: true,
  })
  id: number;
  @Column({
    type: DataType.STRING,
    allowNull: false,
  })
  name: string;
  // ... add more columns as needed
}
  1. Операции CRUD:

3.1. Создание записи:

Чтобы создать новую запись пользователя в базе данных, используйте метод create, предоставляемый Sequelize:

const newUser = await User.create({ name: 'John Doe' });

3.2. Получение записей:

Для получения записей из базы данных Sequelize предоставляет несколько методов. Вот пример опроса всех пользователей:

const users = await User.findAll();

3.3. Обновление записи:

Чтобы обновить существующую запись, используйте метод update:

await User.update({ name: 'Jane Smith' }, { where: { id: 1 } });

3.4. Удаление записи:

Чтобы удалить запись из базы данных, используйте метод destroy:

await User.destroy({ where: { id: 1 } });
  1. Расширенные запросы:

Sequelize поддерживает различные расширенные методы запросов, включая фильтрацию, сортировку, нумерацию страниц и ассоциации. Вот пример запроса пользователей с определенным условием:

const users = await User.findAll({ where: { age: { [Op.gt]: 18 } } });
  1. Ассоциации:

Sequelize позволяет определять связи между моделями, например отношения «один-к-одному», «один-ко-многим» и «многие-ко-многим». Вот пример связи «один ко многим» между моделями «Пользователь» и «Публикация»:

// User model
@HasMany(() => Post)
posts: Post[];
// Post model
@BelongsTo(() => User)
user: User;
  1. Транзакции:

Sequelize поддерживает транзакции для управления атомарными операциями. Вот пример использования транзакций для создания нескольких записей:

«Мир» }, {транзакция });
// … выполняем другие операции внутри транзакции
});

В этой статье мы рассмотрели интеграцию Sequelize, мощной библиотеки ORM, с NestJS. Мы рассмотрели основные методы и предоставили примеры кода для создания, получения, обновления и удаления записей. Кроме того, мы обсудили расширенные запросы, ассоциации и транзакции. Используя эти методы, вы можете создать надежное и масштабируемое взаимодействие с базами данных в своих приложениях NestJS.

Не забудьте обратиться к официальной документации NestJS и Sequelize для получения более подробной информации и дополнительных методов.