Instalar TypeORM y MySQL en NestJS

Hola a todos, hoy os voy a explicar como podemos instalar typeorm en NestJS para manejar una base de datos MySQL.

TypeORM es un ORM (Object Relation Mapping), que permite mapear los objetos que creemos con NestJS y que se refleje en la base de datos.

Sino sabes como crear un proyecto en NestJS, te dejo un pequeño tutorial donde lo explico:

Como crear un proyecto con NestJS

Necesitamos instalar las siguientes dependencias:

$ npm install --save @nestjs/typeorm typeorm mysql2

Necesitamos tener MySQL instalado. Sino lo tienes aqui te dejo como instalarlo:

Como instalar MySQL en Windows

Como instalar MySQL en Linux

En app.module, vamos a importar el módulo TypeOrmModule y llamaremos a su método forRoot()

Ahora, en la raíz del proyecto, crearemos un fichero llamado ormconfig.json con la siguiente estructura:

{
    "type": "mysql",
    "host": "localhost",
    "port": 3306,
    "username": "root",
    "password": "root",
    "database": "example",
    "entities": ["dist/**/*.entity{.ts,.js}"],
    "synchronize": true
}

Explicamos cada propiedad:

  • type: tipo de SGBD, en nuestro caso mysql.
  • host: donde se encuentra servidor.
  • port: puerto de escucha de MySQL.
  • username: nombre de usuario de MySQL.
  • password: password del usuario de MySQL.
  • database: nombre de la base de datos, tenemos que crearla.
  • entities: ruta de los ficheros que debe recoger typeorm para mapear. Con esto lo que hará es que cada fichero .entity lo mapeará.
  • synchronize: en caso de cambios sincroniza los cambios con la base de datos.

Recuerda que debemos crear la base de datos. Lo podemos hacer desde MySQL Workbech.

Le damos a aplicar y lo tenemos.

Solo nos faltaría crear un fichero .entity para que crear una tabla. lo normal seria crear un módulo y dentro su carpeta correspondiente su entity pero en este caso lo vamos a crear directamente en src, recordar que este donde este si termina en .entity.ts lo mapeará.

Os dejo un ejemplo:

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

@Entity()
export class Example {

    @PrimaryGeneratedColumn()
    id?: number;
    
    @Column({ type: String, nullable: false, length: 30 })
    col1!: string;
    
    @Column({ type: Number, nullable: false })
    col2!: number;

    @Column({ type: Date, nullable: false })
    col3!: Date;

}

Te dejo la documentación sobre las entidades aquí.

Cuando arrancamos nuestro proyecto, veremos que en la base de datos, nos habrá creado una tabla nueva.

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada.