Для работы с миграциями в NestJS с использованием PostgreSQL и Sequelize вам потребуется установить соответствующие библиотеки и настроить их.
1. Установка зависимостей:
В корне вашего проекта выполните следующую команду:
npm install --save @nestjs/sequelize sequelize sequelize-cli pg pg-hstore
2. Настройка подключения к базе данных:
В файле app.module.ts
импортируйте модуль SequelizeModule и настройте соединение с базой данных. Ниже приведен пример:
import { Module } from '@nestjs/common'; import { SequelizeModule } from '@nestjs/sequelize'; @Module({ imports: [ SequelizeModule.forRoot({ dialect: 'postgres', host: 'localhost', port: 5432, username: 'your_username', password: 'your_password', database: 'your_database', autoLoadModels: true, synchronize: true, // Внимание: Synchronize увеличивает время запуска в производственных приложениях }), ], }) export class AppModule {}
3. Создание моделей:
В директории вашего модуля создайте папку models
, а внутри нее создайте файлы моделей. Ниже приведен пример модели пользователей:
import { Model, Table, Column } from 'sequelize-typescript'; @Table export class User extends Model<User> { @Column name: string; @Column email: string; @Column password: string; }
4. Создание миграций:
Для создания миграций выполните следующую команду в корне вашего проекта:
npx sequelize-cli migration:generate --name=create-users
Это создаст файл миграции в директории migrations
. В файле миграции определите необходимые изменения в базе данных, например:
'use strict'; module.exports = { up: async (queryInterface, Sequelize) => { await queryInterface.createTable('users', { id: { allowNull: false, autoIncrement: true, primaryKey: true, type: Sequelize.INTEGER }, name: { type: Sequelize.STRING }, email: { type: Sequelize.STRING, unique: true }, password: { type: Sequelize.STRING }, createdAt: { allowNull: false, type: Sequelize.DATE }, updatedAt: { allowNull: false, type: Sequelize.DATE } }); }, down: async (queryInterface, Sequelize) => { await queryInterface.dropTable('users'); } };
5. Применение миграций:
Для применения миграций выполните следующую команду:
npx sequelize-cli db:migrate
После выполнения этой команды таблица "users" будет создана в базе данных PostgreSQL.
6. Откат миграций:
Если вам нужно отменить миграцию, выполните следующую команду:
npx sequelize-cli db:migrate:undo
Это удалит последнюю выполненную миграцию.
Вот и все! Теперь вы знаете, как делать миграции в NestJS с использованием PostgreSQL и Sequelize. Вы можете создавать модели, создавать миграции для изменения базы данных, применять и откатывать миграции при необходимости.