В этой статье блога мы углубимся в сочетание NestJS, мощной платформы Node.js, и Sequelize, популярной библиотеки объектно-реляционного сопоставления (ORM). Мы рассмотрим различные методы и предоставим примеры кода, чтобы продемонстрировать, как эффективно интегрировать Sequelize с NestJS. Итак, приступим!
- Установка и настройка:
Прежде чем мы сможем начать использовать Sequelize с NestJS, нам необходимо настроить необходимые зависимости. Начните с установки Sequelize и необходимого драйвера базы данных, например Sequelize для PostgreSQL (npm install sequelize pg). Затем установите пакеты NestJS Sequelize (npm install @nestjs/sequelize sequelize-typescript). После завершения установки настройте модуль Sequelize в приложении NestJS.
- Определение модели:
Чтобы взаимодействовать с базой данных с помощью 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
}
- Операции 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 } });
- Расширенные запросы:
Sequelize поддерживает различные расширенные методы запросов, включая фильтрацию, сортировку, нумерацию страниц и ассоциации. Вот пример запроса пользователей с определенным условием:
const users = await User.findAll({ where: { age: { [Op.gt]: 18 } } });
- Ассоциации:
Sequelize позволяет определять связи между моделями, например отношения «один-к-одному», «один-ко-многим» и «многие-ко-многим». Вот пример связи «один ко многим» между моделями «Пользователь» и «Публикация»:
// User model
@HasMany(() => Post)
posts: Post[];
// Post model
@BelongsTo(() => User)
user: User;
- Транзакции:
Sequelize поддерживает транзакции для управления атомарными операциями. Вот пример использования транзакций для создания нескольких записей:
«Мир» }, {транзакция });
// … выполняем другие операции внутри транзакции
});
В этой статье мы рассмотрели интеграцию Sequelize, мощной библиотеки ORM, с NestJS. Мы рассмотрели основные методы и предоставили примеры кода для создания, получения, обновления и удаления записей. Кроме того, мы обсудили расширенные запросы, ассоциации и транзакции. Используя эти методы, вы можете создать надежное и масштабируемое взаимодействие с базами данных в своих приложениях NestJS.
Не забудьте обратиться к официальной документации NestJS и Sequelize для получения более подробной информации и дополнительных методов.