Un asignador relacional de objetos (ORM) es una biblioteca que implementa la técnica de asignación relacional de objetos. Esto le permite escribir consultas de bases de datos SQL utilizando el paradigma orientado a objetos de su idioma preferido.

TypeORM es un ORM de TypeScript que facilita la interfaz con varias bases de datos. Funciona con bases de datos SQL pero también interactúa muy bien con bases de datos NoSQL como MongoDB.

NestJS proporciona soporte de alto nivel para TypeORM listo para usar. El paquete TypeORM dedicado hace que la integración sea relativamente fácil.

Paso 1: Instalación de dependencias

Antes de usar TypeORM en una aplicación NestJS, debe instalarlo con su paquete NestJS nativo y su base de datos SQL preferida. SQLite es una opción simple y sin instalación.

Ejecute el siguiente comando para instalar TypeORM y su paquete NestJS nativo, usando el administrador de paquetes npm:

instalar npm @nestjs/typeorm typeorm

Ejecute el siguiente comando para instalar SQLite:

npm Instalar en pc sqlite3
instagram viewer

Paso 2: Creando una Entidad

Una entidad es una colección de campos que definen los datos almacenados en una base de datos. TypeORM usa el archivo de entidad para crear una tabla en su base de datos.

Siga los pasos a continuación para crear una entidad:

  1. Cree un archivo en el módulo de su aplicación y asígnele un nombre siguiendo la convención de nomenclatura de NestJS (.entidad.ts).
  2. En su archivo de entidad, importe el Entidad, Columna, y Columna generada primaria decoradores de tipificar.
  3. En su archivo de entidad, cree y exporte una clase.
  4. Rellene la clase con los valores que desea en su base de datos, como identificación, nombre, etc.
  5. Anote su clase de entidad con el decorador de entidades. Esto hace que su clase sea reconocible para TypeORM como una entidad.
  6. Anote su propiedad de identificación con el decorador PrimaryGeneratedColumn. Esto le dice a TypeORM que marque el identificación como clave principal y auto-incrementarlo.
  7. Anote las propiedades restantes con el decorador Columna. Esto los agrega como columnas en su base de datos.

Por ejemplo:

// src/prueba/prueba.entidad.ts
importar { Entidad, Columna, ColumnaGeneradaPrimaria } de 'tipoforma';

@Entidad()
exportarclasePrueba{
@PrimaryGeneratedColumn()
número de identificación;

@Columna()
propiedad_1: cadena;

@Columna()
propiedad_2: cadena;

@Columna()
propiedad_3: cadena;
}

El archivo de entidad anterior crea esta tabla en su base de datos:

prueba
identificación entero (11) INCREMENTO AUTOMÁTICO DE CLAVE PRINCIPAL
propiedad_1 varchar (255)
propiedad_2 varchar (255)
propiedad_3 varchar (255)

los Documentación de TypeORM cubre las entidades con más detalle.

Paso 3: Conexión de su aplicación a una base de datos

Ahora que su entidad está configurada, deberá conectar su aplicación a una base de datos. Este ejemplo usa SQLite.

Siga los pasos a continuación para conectar su aplicación a una base de datos:

  1. En el módulo raíz de sus aplicaciones (por lo general, el aplicación.módulo.ts archivo), importar TipoOrmModule de @nestjs/typeorm.
  2. En el mismo archivo, importe todas sus entidades.
  3. En el importaciones matriz, llame al para raíz método en TypeOrmModule. El método forRoot comparte la conexión de la base de datos a través de todos los módulos de su aplicación.
  4. Pase un objeto vacío como argumento al método forRoot; este será el objeto de configuración de TypeORM.
  5. Agregar una propiedad, escribe, al objeto de configuración y configúrelo en "sqlite". La propiedad de tipo denota el nombre de la base de datos que está utilizando.
  6. Añadir otra propiedad, base de datos, al objeto de configuración y configúrelo en "prueba.db". La propiedad de la base de datos denota su nombre preferido para su base de datos.
  7. Añadir otra propiedad, entidades, al objeto de configuración y configúrelo en una matriz vacía. Rellene la matriz vacía con las entidades que importó anteriormente.
  8. Añadir otra propiedad, sincronizary configurarlo verdadero; esta propiedad sincroniza sus entidades con su base de datos y la actualiza cada vez que ejecuta el código. Solo debe establecer esta propiedad en verdadero en desarrollo. Durante la producción, debe establecerlo en falso para evitar la pérdida de datos.
// src/app.module.ts
importar { Módulo } de '@nestjs/común';
importar { TipoMóduloOrm } de '@nestjs/typeorm';
importar { Prueba } de './prueba/prueba.entidad';
importar { Entidad2 } de './entidad/entidad.entidad';
importar { Módulo de prueba } de './prueba/prueba.módulo';

@Módulo({
importaciones: [
TipoOrmModule.forRoot({
escribe: 'sqlite',
base de datos: 'prueba.db',
entidades: [Prueba, Entidad2],
sincronizar: verdadero, //solo desarrollo
}),
módulo de prueba,
],
controladores: [],
proveedores: [],
})
exportarclasemódulo de aplicación{}

Paso 4: Creando un Repositorio

Un repositorio es la capa de acceso de una entidad que se utiliza para realizar consultas (insertar, eliminar, guardar, buscar, etc.) sobre una tabla creada por la entidad en la base de datos. TypeORM admite el patrón de diseño de repositorios, por lo que cada entidad tiene su propio repositorio.

TypeORM crea automáticamente un repositorio para su entidad cuando sigue los pasos a continuación:

  1. En el archivo del módulo de su entidad, importe TipoOrmModule de @nestjs/typeorm e importa tu entidad.
  2. Crear un importaciones matriz en el @Módulo decorador.
  3. En la matriz de importaciones, llame al paraCaracterística método en TypeOrmModule.
  4. Pase una matriz como argumento a your y complete la matriz con su entidad.
// src/prueba/prueba.módulo.ts
importar { Módulo } de '@nestjs/común';
importar { TipoMóduloOrm } de '@nestjs/typeorm';
importar { Controlador de prueba } de './prueba.controlador';
importar { Servicio de prueba } de './servicio.de.prueba';
importar { Prueba } de './entidad.prueba';

@Módulo({
importaciones: [TypeOrmModule.forFeature([Prueba])],
proveedores: [Servicio de prueba],
controladores: [Controlador de prueba],
})

Paso 5: Inyectar su repositorio a su servicio mediante inyección de dependencia

La inyección de dependencia es una técnica de ingeniería de software que es una forma del principio de inversión del control. Cambia la carga de la gestión de dependencias del código del cliente a la biblioteca o servicio del que depende.

Siga los pasos a continuación para inyectar su repositorio en un servicio:

  1. En su archivo de servicio, importe Repositorio de tipificar y el InyectarRepositorio decorador de @nestjs/typeorm. También importe la entidad que desea inyectar en su repositorio.
  2. En su clase de servicio, cree un constructor.
  3. declarar un privado variable, repositorio, como parámetro en el constructor para inicializarlo.
  4. Asigne un tipo de Repositorio al repositorio con un tipo genérico de su entidad.
  5. Anote el repositorio con el decorador InjectRepository y pase su entidad como argumento.
// prueba.servicio.ts
importar { Inyectable } de '@nestjs/común';
importar { Repositorio } de 'tipoforma';
importar { InyectarRepositorio } de '@nestjs/typeorm';
importar { Prueba } de './entidad.prueba';

@Inyectable()
exportarclaseservicio de prueba{
constructor(
@InyectarRepositorio(Prueba)
repositorio privado: Repositorio<Prueba>,
) {}
}

Ahora que su configuración está completa, puede hacer Consultas SQL en él para recuperar o modificar datos.

Hacer consultas SQL con TypeORM

Puede realizar cualquier consulta SQL simple llamando a los métodos de repositorio de TypeORM en el repositorio variable dentro de su clase de servicio. También puede crear consultas SQL complejas utilizando el generador de consultas de TypeORM.