En este post, te guiaré paso a paso para configurar un proyecto utilizando NestJS con TypeORM y PostgreSQL. Al finalizar, tendrás un entorno funcional donde podrás crear y gestionar bases de datos con facilidad.
Prerrequisitos
Antes de comenzar, asegúrate de tener lo siguiente instalado en tu sistema:
- Node.js: Asegúrate de tener Node.js instalado. Puedes descargarlo Cómo instalar y usar NVM para gestionar versiones de Node.js en Ubuntu y Windows
-
Editor de código: Te recomiendo Visual Studio Code, pero puedes usar cualquier otro que prefieras.
-
Un gestor de paquetes como npm o yarn.
Pasos para implementar NestJS com base de datos
Paso 1: Crear un nuevo proyecto NestJS
Primero, crea un nuevo proyecto de NestJS utilizando el CLI de NestJS:
npm i -g @nestjs/cli
nestjs new my-nest-project
Selecciona el gestor de paquetes que prefieras (npm o yarn) cuando se te pida.
Paso 2: Instalar las dependencias necesarias
Añade los paquetes necesarios para trabajar con PostgreSQL y TypeORM.
cd my-nest-project
npm install @nestjs/typeorm typeorm pg
Instalaremos dependencias para dotenv para crear las variables de entorno.
npm install @nestjs/config
Procedemos a crear el archivo ´.env´ en la raiz del proyecto en donde colocaremos los siguientes valores:
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=your_db_user
DB_PASSWORD=your_db_password
DB_NAME=my_database
Paso 3: Configurar el módulo TypeORM
Edita el archivo app.module.ts
para configurar el módulo TypeORM:
// src/app.module.ts
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { UserModule } from './user/user.module';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true, // Hacer que ConfigModule esté disponible globalmente
}),
TypeOrmModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: (configService: ConfigService) => ({
type: 'postgres',
host: configService.get<string>('DB_HOST'),
port: configService.get<number>('DB_PORT'),
username: configService.get<string>('DB_USERNAME'),
password: configService.get<string>('DB_PASSWORD'),
database: configService.get<string>('DB_NAME'),
entities: [__dirname + '/**/*.entity{.ts,.js}'],
synchronize: false, // Usa migrations en producción en vez de sincronizar
}),
}),
UserModule, // Ejemplo de un módulo
],
})
export class AppModule {}
Paso 4: Crear una entidad
Crea una entidad representativa de tu base de datos. Por ejemplo, para gestionar usuarios:
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
email: string;
@Column()
password: string;
}
Conclusión
Has configurado exitosamente un proyecto NestJS con TypeORM y PostgreSQL. Ahora tienes una base sólida para desarrollar aplicaciones escalables y robustas