Configurando un proyecto NestJS con TypeORM y PostgreSQL


En este post, te guiaré paso a paso para configurar un proyecto utilizando NestJS con TypeORM y PostgreSQL

oscar Escrito por oscar 14 November 2024 96 0

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:

  1. 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
  2. Editor de código: Te recomiendo Visual Studio Code, pero puedes usar cualquier otro que prefieras.

  3. 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


Comentario

Debe aceptar antes de enviar