Как работать с базой данных с помощью TypeORM?

Вопрос проверяет понимание работы с базой данных через ORM и умение реализовывать CRUD-операции.

Короткий ответ

TypeORM — это ORM, которая упрощает взаимодействие с базами данных. С помощью TypeORM можно определять сущности, управлять схемами и выполнять запросы через репозитории. В NestJS интеграция выполняется через модуль TypeOrmModule.

Длинный ответ

TypeORM позволяет абстрагироваться от SQL-запросов и работать с данными как с объектами. Основные шаги для использования TypeORM в NestJS:

Установить зависимости:

npm install @nestjs/typeorm typeorm mysql2

Настроить модуль подключения:

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { User } from './user.entity';

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: 'password',
      database: 'test',
      entities: [User],
      synchronize: true,
    }),
    TypeOrmModule.forFeature([User]),
  ],
})
export class AppModule {}

Создать сущность:

import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  email: string;
}

Написать сервис для работы с данными:

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>,
  ) {}

  findAll() {
    return this.userRepository.find();
  }

  create(user: User) {
    return this.userRepository.save(user);
  }
}

Подключить сервис в контроллере:

import { Controller, Get, Post, Body } from '@nestjs/common';
import { UserService } from './user.service';
import { User } from './user.entity';

@Controller('users')
export class UserController {
  constructor(private userService: UserService) {}

  @Get()
  findAll() {
    return this.userService.findAll();
  }

  @Post()
  create(@Body() user: User) {
    return this.userService.create(user);
  }
}


TypeORM упрощает управление базой данных, предоставляя объектно-ориентированный подход. Используйте его для масштабируемых и структурированных приложений.

Уровень

  • Рейтинг:

    2

  • Сложность:

    4

Навыки

  • Nest.js

Ключевые слова

Подпишись на Node.js Developer в телеграм