Для подключения к PostgreSQL с использованием TypeORM через Nestjs, запущенном в контейнере, вам необходимо выполнить несколько шагов.
1. Установите необходимые пакеты.
Убедитесь, что вы установили пакеты nestjs
, typeorm
, @nestjs/typeorm
, pg
(драйвер PostgreSQL) и dotenv
(для загрузки переменных окружения).
npm install --save @nestjs/typeorm typeorm pg dotenv
2. Создайте файл конфигурации TypeORM.
В корневой директории вашего проекта создайте файл ormconfig.js
со следующим содержимым:
module.exports = { type: 'postgres', host: process.env.DB_HOST, port: process.env.DB_PORT, username: process.env.DB_USERNAME, password: process.env.DB_PASSWORD, database: process.env.DB_NAME, entities: [__dirname + '/**/*.entity{.ts,.js}'], synchronize: true, };
В этом файле мы используем переменные окружения для хранения конфигурации подключения к базе данных.
3. Создайте .env
файл.
В корневой директории вашего проекта создайте файл .env
и добавьте в него следующую информацию (замените значения на свои):
DB_HOST=localhost DB_PORT=5432 DB_USERNAME=postgres DB_PASSWORD=your_password DB_NAME=your_database_name
В этом файле мы определяем значения переменных окружения, которые будут использоваться в файле ormconfig.js
.
4. Добавьте настройки подключения в модуль Nestjs.
Вам необходимо импортировать модуль TypeOrmModule
из @nestjs/typeorm
и настроить его в модуле вашего приложения.
Создайте новый модуль или измените существующий, добавьте следующий код:
import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; @Module({ imports: [ TypeOrmModule.forRoot(), ], }) export class AppModule {}
TypeOrmModule.forRoot()
загрузит настройки подключения из файла ormconfig.js
.
5. Внедрите репозитории TypeORM в ваши сервисы или контроллеры.
Вам нужно импортировать модуль TypeOrmModule
и использовать его метод getRepository
для получения репозитория для вашей сущности.
Пример использования репозитория в сервисе:
import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { User } from './user.entity'; @Injectable() export class UserService { constructor( @InjectRepository(User) private userRepository: Repository<User>, ) {} async findAll(): Promise<User[]> { return await this.userRepository.find(); } }
В этом примере мы инжектируем репозиторий User
и используем его для выполнения операций с базой данных.
6. Запустите ваше приложение в контейнере Docker.
Создайте Dockerfile и docker-compose.yaml файлы в корневой директории вашего проекта, чтобы создать образ и контейнер для вашего приложения Nestjs. В файле docker-compose.yaml добавьте следующий код:
version: '3' services: app: build: context: . dockerfile: Dockerfile ports: - 3000:3000
Затем выполните следующие команды в терминале:
docker-compose build docker-compose up
После этого ваше приложение должно быть доступно на порту 3000.
7. Проверьте подключение к базе данных.
Вы можете использовать утилиту psql
для проверки подключения к PostgreSQL. Выполните следующую команду в терминале:
psql -h localhost -p 5432 -U postgres -W
Введите пароль, который вы указали в файле .env
, и вы должны увидеть приглашение postgres=#
, что указывает на успешное подключение.
Это главные шаги для подключения к PostgreSQL с использованием TypeORM через Nestjs, запущенном в контейнере Docker. Вы можете настроить и дополнить конфигурацию TypeORM и Nestjs в соответствии с вашими потребностями.