Conexión a Bases de Datos con Variables de Entorno en Node.js
Clase 8 de 36 • Curso de NestJS: Persistencia de Datos con TypeORM
Contenido del curso
Database
- 3
Instalación de Docker en Windows, macOS y Ubuntu
01:35 min - 4

Configuración de Postgres en Docker Compose
09:18 min - 5

Conexión a Postgres en Docker: Terminal y PgAdmin
15:16 min - 6

Conexión de NestJS a Postgres con Node Postgres
07:28 min - 7

Inyección de Dependencias en NETJS: Conexión a PostgreSQL
10:49 min - 8

Conexión a Bases de Datos con Variables de Entorno en Node.js
Viendo ahora
TypeORM
- 9

Implementación de TypeORM con NestJS en Proyectos Node.js
09:14 min - 10

Creación de Entidades en ORM para Tiendas Virtuales
07:46 min - 11

Implementación del Patrón Repository en NestJS con TypeORM
13:31 min - 12

Operaciones CRUD en ProductService usando TypeORM y Postgres
13:35 min - 13

Cambio de Postgres a MySQL en Docker para CRUD de Productos
17:28 min
Migraciones
Relaciones
- 18

Relaciones 1 a 1 en Bases de Datos con TimeORM
18:58 min - 19

Manipulación de Relaciones Uno a Uno en Controladores y Servicios
10:28 min - 20

Relaciones Uno a Muchos en Bases de Datos con TypeORM
10:36 min - 21

Gestión de Relaciones Uno a Muchos en Controladores de API
10:27 min - 22

Relaciones Muchos a Muchos en Time1M: Creación y Manejo Práctico
08:38 min - 23

Manipulación de Relaciones Muchos a Muchos en Controladores
15:08 min - 24

Manipulación de Relaciones Muchos a Muchos con TimeORM en JavaScript
19:09 min - 25

Relaciones Muchos a Muchos con Campos Agregados en TimeWareM
16:41 min - 26

CRUD de órdenes de compra y gestión de ítems en NestJS
30:07 min
Consultas
- 27

Paginación de Productos con Limit y Offset en Controladores API
10:37 min - 28

Filtrado de Precios con Rango Usando Between en Time Wareham
10:17 min - 29

Indexación de Parámetros en Bases de Datos: Uso y Precauciones
02:56 min - 30

Buenas prácticas de nombramiento en JavaScript y bases de datos
17:52 min - 31

Serialización y Transformación de Datos en APIs con ClassTransformer
16:55 min
Migración a NestJS 9 y TypeORM 0.3
Próximos pasos
Resumen
// .env, .stag.env, .prod.env POSTGRES_DB=my_db POSTGRES_USER=nico POSTGRES_PASSWORD=postgres POSTGRES_PORT=5432 POSTGRES_HOST=localhost
// src/config.ts import { registerAs } from '@nestjs/config'; export default registerAs('config', () => { return { database: { name: process.env.DATABASE_NAME, port: process.env.DATABASE_PORT, }, postgres: { // 👈 add config dbName: process.env.POSTGRES_DB, port: parseInt(process.env.POSTGRES_PORT, 10), password: process.env.POSTGRES_PASSWORD, user: process.env.POSTGRES_USER, host: process.env.POSTGRES_HOST, }, apiKey: process.env.API_KEY, }; });
// src/database/database.module.ts import { ConfigType } from '@nestjs/config'; import config from '../config'; @Global() @Module({ providers: [ ... { provide: 'PG', useFactory: (configService: ConfigType<typeof config>) => { // 👈 const { user, host, dbName, password, port } = configService.postgres; const client = new Client({ user, host, database: dbName, password, port, }); client.connect(); return client; }, inject: [config.KEY], }, ], exports: ['API_KEY', 'PG'], }) export class DatabaseModule {}
// src/users/services/users.service.ts import { Client } from 'pg'; @Injectable() export class UsersService { constructor( ..., @Inject('PG') private clientPg: Client, // 👈 inject PG ) {} getTasks() { return new Promise((resolve, reject) => { this.clientPg.query('SELECT * FROM tasks', (err, res) => { if (err) { reject(err); } resolve(res.rows); }); }); } }
// src/users/controllers/users.controller.ts @Controller('users') export class UsersController { @Get('tasks') // 👈 new endpoint getTasks() { return this.usersService.getTasks(); } }