Trabajo con bases de datos en TypeScript: PostgreSQL y MongoDB para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con bases de datos en TypeScript: PostgreSQL y MongoDB para principiantes

\n\n

El desarrollo web moderno rara vez prescinde de las bases de datos. TypeScript, como superconjunto estrictamente tipado de JavaScript, ofrece excelentes oportunidades para un trabajo seguro y predecible con datos. En este artículo, analizaremos cómo conectar y utilizar dos bases de datos populares — la relacional PostgreSQL y la orientada a documentos MongoDB — en proyectos con TypeScript. El material está dirigido a desarrolladores principiantes familiarizados con los fundamentos de TypeScript y Node.js.

\n\n

1. Preparación del entorno e instalación de dependencias

\n\n

Antes de comenzar, asegúrate de tener instalados Node.js y npm. Para trabajar con TypeScript, instala el compilador y los tipos para Node.js:

\n\n
npm install -g typescript\nnpm init -y\nnpm install typescript @types/node --save-dev\nnpx tsc --init
\n\n

Para trabajar con bases de datos, utilizaremos bibliotecas populares:

\n
    \n
  • TypeORM — ORM para PostgreSQL (y otras bases de datos SQL)
  • \n
  • Mongoose — ODM para MongoDB
  • \n
\n\n

Instálalos en tu proyecto:

\n\n
npm install typeorm reflect-metadata pg\nnpm install mongoose
\n\n

No olvides agregar "experimentalDecorators": true y "emitDecoratorMetadata": true en el archivo tsconfig.json.

\n\n

2. Trabajo con PostgreSQL a través de TypeORM

\n\n

PostgreSQL es un potente sistema de gestión de bases de datos relacional. TypeORM permite trabajar con él mediante entidades (entities) y repositorios, lo que hace que el código sea limpio y tipado.

\n\n

2.1. Creación de la conexión y la entidad

\n\n

Creemos un archivo data-source.ts para configurar la conexión:

\n\n
import { DataSource } from "typeorm";\n\nexport const AppDataSource = new DataSource({\n    type: "postgres",\n    host: "localhost",\n    port: 5432,\n    username: "your_user",\n    password: "your_password",\n    database: "your_db",\n    synchronize: true,\n    logging: false,\n    entities: ["src/entity/**/*.ts"],\n});
\n\n

Ahora creemos la entidad User en el archivo src/entity/User.ts:

\n\n
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";\n\n@Entity()\nexport class User {\n    @PrimaryGeneratedColumn()\n    id: number;\n\n    @Column()\n    name: string;\n\n    @Column({ unique: true })\n    email: string;\n\n    @Column()\n    age: number;\n}
\n\n

2.2. Operaciones CRUD con TypeORM

\n\n

Ejemplo de creación y obtención de usuarios:

\n\n
import { AppDataSource } from "./data-source";\nimport { User } from "./entity/User";\n\nasync function main() {\n    await AppDataSource.initialize();\n    const userRepository = AppDataSource.getRepository(User);\n\n    // Creación\n    const newUser = userRepository.create({\n        name: "Iván",\n        email: "ivan@example.com",\n        age: 25\n    });\n    await userRepository.save(newUser);\n    console.log("Usuario creado:", newUser);\n\n    // Lectura de todos\n    const users = await userRepository.find();\n    console.log("Todos los usuarios:", users);\n\n    // Actualización\n    await userRepository.update({ id: 1 }, { age: 26 });\n\n    // Eliminación\n    await userRepository.delete({ id: 1 });\n}\n\nmain().catch(console.error);
\n\n

TypeORM genera automáticamente las consultas SQL, y la tipificación de TypeScript protege contra errores en tiempo de compilación.

\n\n

3. Trabajo con MongoDB a través de Mongoose

\n\n

MongoDB es una base de datos NoSQL que almacena datos en un formato similar a JSON. Mongoose proporciona esquemas y validación para TypeScript.

\n\n

3.1. Conexión y definición del esquema

\n\n

Creemos un archivo db.ts para la conexión:

\n\n
import mongoose from "mongoose";\n\nexport async function connectDB() {\n    await mongoose.connect("mongodb://localhost:27017/mydb");\n    console.log("Conectado a MongoDB");\n}
\

Blogs

Book Recommendations