Nest: TypeORM
Aprende a integrar TypeORM con NestJS en 2024. Configuración, entidades y repositorios para gestionar bases de datos de manera eficiente.
Aprende Nest GRATIS y certifícateIntegrar TypeORM en un proyecto NestJS es una tarea fundamental para gestionar bases de datos de manera eficiente. En esta guía, te mostraremos cómo configurar y utilizar TypeORM con NestJS, siguiendo las mejores prácticas y recomendaciones actualizadas para 2024.
Instalación y configuración
Para comenzar, necesitas instalar los paquetes necesarios. Ejecuta el siguiente comando en tu terminal:
npm install @nestjs/typeorm typeorm pg
En este ejemplo, utilizamos pg
para PostgreSQL, pero puedes sustituirlo por otro paquete de base de datos como mysql
o sqlite
.
A continuación, configura TypeORM en el archivo app.module.ts
:
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'postgres',
host: 'localhost',
port: 5432,
username: 'test',
password: 'test',
database: 'test',
entities: [__dirname + '/**/*.entity{.ts,.js}'],
synchronize: true,
}),
],
})
export class AppModule {}
Creación de entidades
Las entidades son clases que representan las tablas de la base de datos. Vamos a crear una entidad llamada User
:
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
email: string;
}
Guarda esta entidad en un archivo llamado user.entity.ts
dentro de una carpeta entities
.
Repositorios y servicios
Para interactuar con la base de datos, utilizamos repositorios. Crea un módulo y servicio para gestionar los usuarios:
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { User } from './entities/user.entity';
import { UsersService } from './users.service';
import { UsersController } from './users.controller';
@Module({
imports: [TypeOrmModule.forFeature([User])],
providers: [UsersService],
controllers: [UsersController],
})
export class UsersModule {}
En el archivo users.service.ts
, implementa el servicio:
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './entities/user.entity';
@Injectable()
export class UsersService {
constructor(
@InjectRepository(User)
private usersRepository: Repository<User>,
) {}
findAll(): Promise<User[]> {
return this.usersRepository.find();
}
findOne(id: number): Promise<User> {
return this.usersRepository.findOneBy({ id });
}
create(user: User): Promise<User> {
return this.usersRepository.save(user);
}
async remove(id: number): Promise<void> {
await this.usersRepository.delete(id);
}
}
Controladores
Finalmente, crea el controlador para gestionar las rutas HTTP en users.controller.ts
:
import { Controller, Get, Post, Body, Param, Delete } from '@nestjs/common';
import { UsersService } from './users.service';
import { User } from './entities/user.entity';
@Controller('users')
export class UsersController {
constructor(private readonly usersService: UsersService) {}
@Get()
findAll(): Promise<User[]> {
return this.usersService.findAll();
}
@Get(':id')
findOne(@Param('id') id: string): Promise<User> {
return this.usersService.findOne(+id);
}
@Post()
create(@Body() user: User): Promise<User> {
return this.usersService.create(user);
}
@Delete(':id')
remove(@Param('id') id: string): Promise<void> {
return this.usersService.remove(+id);
}
}
Lecciones de este módulo de Nest
Lecciones de programación del módulo TypeORM del curso de Nest.
Ejercicios de programación en este módulo de Nest
Evalúa tus conocimientos en TypeORM con ejercicios de programación TypeORM de tipo Test, Puzzle, Código y Proyecto con VSCode.