Как работать с базой данных с помощью 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 упрощает управление базой данных, предоставляя объектно-ориентированный подход. Используйте его для масштабируемых и структурированных приложений.