Introducción a TypeORM y ejemplos de implementación
Consulta la documentación oficial de TypeORM en https://typeorm.io
TypeORM es un ORM (Object-Relational Mapping) para Node.js, escrito en TypeScript. Proporciona una forma intuitiva de interactuar con bases de datos relacionales como PostgreSQL, MySQL, SQLite y más, permitiendo que los desarrolladores definan entidades como clases y accedan a las tablas de la base de datos como si fueran objetos JavaScript.
En Dafitech, utilizamos TypeORM para gestionar nuestras bases de datos de manera eficiente, utilizando un enfoque orientado a objetos, lo que facilita la creación de consultas complejas y la gestión de transacciones.
A continuación se muestra un ejemplo de cómo definir una entidad con TypeORM en Node.js. Esta entidad representa una tabla Document
en la base de datos:
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity()
export class Document {
@PrimaryGeneratedColumn()
id: number;
@Column()
client: string;
@Column()
externalId: string;
@Column()
origen: string;
@Column({ default: 'ACTIVE' })
status: string;
@Column()
createdAt: Date;
@Column()
updatedAt: Date;
}
Esta entidad define una tabla Document con las columnas id
, client
, externalId
, origen
, status
, createdAt
, y updatedAt
.
A continuación se muestra un ejemplo de cómo implementar las operaciones básicas de CRUD (Crear, Leer, Actualizar, Eliminar) utilizando TypeORM en Node.js, basándose en el ejemplo proporcionado.
async createDocument(data: Partial): Promise {
const document = this.documentRepository.create(data);
await this.documentRepository.save(document);
return document;
}
async findDocument(client: string, externalId: string, origen: string): Promise {
let document = await this.documentRepository.findOne({
where: {
client: client,
origen: origen,
externalId: externalId,
status: 'ACTIVE'
}
});
if (document == undefined) {
return undefined;
}
let doc = new Document();
Object.assign(doc, document);
return doc;
}
async updateDocument(id: number, data: Partial): Promise {
let document = await this.documentRepository.findOneBy({ id });
if (!document) {
return null;
}
Object.assign(document, data);
return await this.documentRepository.save(document);
}
async deleteDocument(id: number): Promise {
const result = await this.documentRepository.delete({ id });
return result.affected > 0;
}
Estos ejemplos muestran cómo implementar las operaciones básicas de CRUD utilizando TypeORM. El método findDocument
ilustra cómo buscar un documento activo con un client
, externalId
, y origen
, mientras que los otros métodos manejan la creación, actualización y eliminación de documentos en la base de datos.