Instalar TypeORM y Oracle 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:

https://www.discoduroderoer.es/como-crear-un-proyecto-con-nestjs/

Necesitamos instalar las siguientes dependencias:

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

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

Como instalar Oracle Database XE en Windows

https://www.discoduroderoer.es/como-instalar-sql-developer-en-windows

Os recomiendo que os creéis un usuario, aquí lo explico:

Crear usuario en Oracle

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": "oracle",
    "host": "localhost",
    "port": 1521,
    "username": "example",
    "password": "123456",
    "sid": "xe",
    "entities": ["dist/**/*.entity{.ts,.js}"],
    "synchronize": true
}

Explicamos cada propiedad:

  • type: tipo de SGBD, en nuestro caso oracle.
  • host: donde se encuentra servidor.
  • port: puerto de escucha de Oracle.
  • username: nombre de usuario de Oracle.
  • password: password del usuario de Oracle.
  • sid: identificador de la base de datos, por defecto es xe.
  • 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.

Os recomiendo tener la conexión creada desde SQLDeveloper.

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.

Etiquetas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *