¿Qué es TypeORM y para qué sirve?
\n\nTypeORM es una potente biblioteca de mapeo objeto-relacional (ORM) para TypeScript y JavaScript que funciona con varias bases de datos: PostgreSQL, MySQL, MariaDB, SQLite, MS SQL Server, Oracle y MongoDB (parcialmente). Proporciona una forma conveniente de interactuar con bases de datos relacionales mediante un enfoque orientado a objetos, permitiendo a los desarrolladores trabajar con tablas como clases y con registros como objetos.
\n\nRazones principales para usar TypeORM:
\n- \n
- Tipado: Integración completa con TypeScript que proporciona tipado estricto y autocompletado en el IDE. \n
- Enfoque declarativo: Definición del esquema de la base de datos mediante decoradores o esquemas. \n
- Migraciones automáticas: Creación y sincronización automática del esquema de la base de datos. \n
- Active Record y Data Mapper: Soporte para ambos patrones populares. \n
- Soporte de relaciones: One-to-One, One-to-Many, Many-to-Many. \n
- Query Builder: Constructor de consultas flexible para consultas SQL complejas. \n
- Multiplataforma: Funciona con Node.js, navegadores, React Native e Ionic. \n
Instalación de TypeORM
\n\nPara instalar TypeORM y los controladores de base de datos necesarios, use npm (o yarn):
\n\n// Instalación de TypeORM\nnpm install typeorm --save\n\n// Instalación de reflect-metadata (obligatorio para decoradores)\nnpm install reflect-metadata --save\n\n// Instalación del controlador para PostgreSQL\nnpm install pg --save\n\n// Instalación del controlador para MySQL/MariaDB\nnpm install mysql2 --save\n\n// Instalación del controlador para SQLite\nnpm install sqlite3 --save\n\n// Instalación del controlador para SQL Server\nnpm install mssql --save\n\n// Instalación del controlador para MongoDB (experimental)\nnpm install mongodb --save\n\nDespués de la instalación, agregue en tsconfig.json:
{\n "compilerOptions": {\n "emitDecoratorMetadata": true,\n "experimentalDecorators": true\n }\n}\n\nInicio rápido con ejemplo de código
\n\nCreemos una aplicación simple para gestionar usuarios usando SQLite (no requiere instalación de servidor).
\n\n1. Cree el archivo data-source.ts para la configuración de la conexión:
import { DataSource } from "typeorm";\nimport { User } from "./entity/User";\n\nexport const AppDataSource = new DataSource({\n type: "sqlite",\n database: "database.sqlite",\n synchronize: true,\n logging: true,\n entities: [User],\n subscribers: [],\n migrations: [],\n});\n\n// Inicialización de la conexión\nAppDataSource.initialize()\n .then(() => {\n console.log("¡El Data Source ha sido inicializado!");\n })\n .catch((err) => {\n console.error("Error durante la inicialización del Data Source:", err);\n });\n\n2. Cree la entidad User en el archivo entity/User.ts:
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";\n\n@Entity()\nexport class User {\n @PrimaryGeneratedColumn()\n id: number;\n\n @Column()\n firstName: string;\n\n @Column()\n lastName: string;\n\n @Column({ unique: true })\n email: string;\n\n @Column({ default: true })\n isActive: boolean;\n}\n\n3. Cree el archivo index.ts para demostrar el funcionamiento:
import "reflect-metadata";\nimport { AppDataSource } from "./data-source";\nimport { User } from "./entity/User";\n\nasync function main() {\n await AppDataSource.initialize();\n\n // Creamos un nuevo usuario\n const user = new User();\n user.firstName = "Iván";\n user.lastName = "Petrov";\n user.email = "ivan@example.com";\n user.isActive = true;\n\n // Guardamos en la base de datos\n await AppDataSource.manager También en la biblioteca
gRPC para Java: bibliotecas, configuración y ejemplos de uso
Procesamiento de JSON en C# (.NET): Guía completa de Newtonsoft.Json y System.Text.Json
Cliente Redis para C# (.NET): StackExchange.Redis — conexión y ejemplos
NHibernate para C# (.NET): guía completa con ejemplos
Planificador de tareas en Node.js (node-cron, node-schedule, Bull)