Introducción

1

¿Ya terminaste el Curso de NestJS: Programación Modular?

2

Platzi Store: presentación del proyecto e instalación

Database

3

Cómo instalar Docker para este proyecto

4

Configuración de PostgresSQL en Docker

5

Explorando postgres con interfaces gráficas y terminal

6

Integración de node-postgres con NestJS

7

Conexión como inyectable y ejecutando un SELECT

8

Usando variables de ambiente

TypeORM

9

¿Qué es un ORM? Instalando y configurando TypeORM Module

10

Creando tu primera entidad

11

TypeORM: active record vs. repositories

12

Crear, actualizar y eliminar

13

Cambiar a Mysql demo (opcional)

Migraciones

14

Sync Mode vs. Migraciones en TypeORM

15

Configurando migraciones y npm scripts

16

Corriendo migraciones

17

Modificando una entidad

Relaciones

18

Relaciones uno a uno

19

Resolviendo la relación uno a uno en el controlador

20

Relaciones uno a muchos

21

Resolviendo la relación uno a muchos en el controlador

22

Relaciones muchos a muchos

23

Resolviendo la relación muchos a muchos en el controlador

24

Manipulación de arreglos en relaciones muchos a muchos

25

Relaciones muchos a muchos personalizadas

26

Resolviendo la relación muchos a muchos personalizada en el controlador

Consultas

27

Paginación

28

Filtrando precios con operadores

29

Agregando indexadores

30

Modificando el naming

31

Serializar

Migración a NestJS 9 y TypeORM 0.3

32

Actualizando Dependencias para NestJS 9

33

Cambios en TypeORM 0.3

34

Migraciones en TypeORM 0.3

Próximos pasos

35

Cómo solucionar una referencia circular entre módulos

36

Continúa con el Curso de NestJS: Autenticación con Passport y JWT

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
22 Hrs
53 Min
20 Seg

Integración de node-postgres con NestJS

6/36
Recursos
npm i pg 
npm i @types/pg -D
// src/app.module.ts

import { Client } from 'pg';

const client = new Client({
  user: 'root',
  host: 'localhost',
  database: 'my_db',
  password: '123456',
  port: 5432,
});

client.connect();
client.query('SELECT * FROM tasks', (err, res) => {
  console.error(err);
  console.log(res.rows);
});

Aportes 12

Preguntas 11

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

like si también te asustaste con el sonido del minuto 1:08 jajaja

Si al momento de ejecutar el sistema les aparece un error como este error: la autentificaci�n password fall� para el usuario �root� una de las razones es que antes ya usamos postgres y tenemos el servicio corriendo en nuestro PC, para evitar ese conflicto podemos modificar el puerto que exponemos del contenedor docker, por ejemplo:

  postgres:
    image: postgres:13
    environment:
      - POSTGRES_DB=my_db
      - POSTGRES_USER=root
      - POSTGRES_PASSWORD=123456
    ports:
      - '5433:5432'  # 👈🏻Acá le decimos que dentro del contenedor el puerto que usará es el 5432 y para que nosotros usemos fuera del contenedor le decimo que exponga el puerto 5433
    volumes:
      - ./postgres_data:/var/lib/postgresql/data

Ahora debemos modificar nuestra conexión a la bd de la siguiente manera

// app.module.ts
const client = new Client({
  user: 'root',
  host: 'localhost',
  database: 'my_db',
  password: '123456',
  port: 5433, // 👈🏻 acá colocamos el puerto que estamos exponiendo del contenedor
});

De esta manera podemos seguir trabajando con nuestro contenedor, sin afectar al servicio postgres que teníamos anteriormente en nuestra PC.

Si vienes del futuro y estás siguiendo el curso con el repo del profesor, seguramente tendrás que hacer npm i [email protected] --legacy-peer-deps para instalar la dependencia

Para no dejar las contraseñas en el docker file se puede hacer esto:

  1. Crear una carpeta llama .env
POSTGRES_DB:db
POSTGRES_USER:postgres
POSTGRES_PASSWORD:12334
DATABASE_PORT:1000

PGADMIN_DEFAULT_EMAIL:[email protected]
PGADMIN_DEFAULT_PASSWORD:1233

Y en el docker compose se pose

version: '3.3'

services:
  postgresdb:
    image: postgres:13
    environment:
      - POSTGRES_DB=${POSTGRES_DB}
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${joddoc-8baxRi-sywzoz}
    ports:
      - '5432:5432'
    volumes:
      - ./postgres_data:/var/lib/postgresql/data


  pgadmin:
    image: dpage/pgadmin4
    environment:
     - PGADMIN_DEFAULT_EMAIL=${PGADMIN_DEFAULT_EMAIL}
     - PGADMIN_DEFAULT_PASSWORD=${PGADMIN_DEFAULT_PASSWORD}
    ports:
      - "5050:80"

Si alguien tiene el siguiente error cuando intenta conectar con la base de datos:
(node:18280) UnhandledPromiseRejectionWarning: error: password authentication failed foruser “root”

La solución en Windows es ir a los servicios, buscar el servicio con el nombre “postgresql-x64-13 - PostgreSQL Server 13” dar click derecho y parar (stop).

Hola amigos. Para los usan la siguiente version
node --version
v18.15.0

nest --version
10.1.8

node-postgre
8.11.1

Tenia problemas en la conexión cuando configuraba tal cual el prof. indicaba.

muestro mi configuracion docker-compose.yml

version: '3.3'
services:
  postgres:
    image:  postgres:14
    environment:
      - POSTGRES_DB=my_db_login
      - POSTGRES_USER=root
      - POSTGRES_PASSWORD=123456
    ports:
      - '5433:5432'
    volumes:
      - ./postgres_data:/var/lib/postgresql/data

  
  pgadmin:
    image:  dpage/pgadmin4
    environment:
      - PGADMIN_DEFAULT_EMAIL=root@admin.com
      - PGADMIN_DEFAULT_PASSWORD=root
    ports:
      - "5050:80"

  
y mi configuración del cliente:



const client = new Client({
user: ‘root’,
host: ‘localhost’,
database: ‘postgres’,
password: ‘123456’,
port: 5433,
});

client.connect();

client.query(‘SELECT NOW()’,(err,res)=>{
console.log(err);
console.log(res.rows);
});


Solo cambiando de my_db_login a postgres no me da error. Pero si quisiera agregar una nueva base de datos en mi mismo contenedor no se como lo llamaria desde el cliente. Esa es mi duda. Gracias  antemano


Estaba teniendo un error a la hora de conectar a Postgres y revisando me di cuenta que ya lo tenóa instalado localmente. Recomiendo revisar si les aparece el mismo error. No vaya a ser que ya tengan Postgres localmente y no conecte a Docker.

en mi caso sale este error

(node:18280) UnhandledPromiseRejectionWarning: error: password authentication failed for user "root"

no se cual sea el error ya que tengo todo igual
ahí dice sobre el password pero como dije tengo el mismo 123456 lo mismo el el archivo .yml

Quiza a alguien le haya pasado lo mismo

Top ediciones de video mas zarpadas 😎🔥

Sí te salio el error

error: la autentificaci�n password fall� para el usuario �root�

Puede deverse a:

  • El usuario de tu servidor no es root, sino postgres.

  • El puerto se encuentra ocupado con otro programa.

En mi caso me aparecía el siguiente error:

Error: connect ECONNREFUSED 127.0.0.1:5432
  at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1161:16) {
  errno: -111,   code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 5432

Para solucionarlo, tuve que cambiar el puerto de la configuracion de Postgres y agregar la red a la cual iba a estar:

version: '3.3'

services:
  postgres:
    container_name: postgres
    image: postgres:13
    environment:
     - POSTGRES_DB=my_db
     - POSTGRES_USER=root
     - POSTGRES_PASSWORD=123456
    ports:
      - "5432:5432"
    volumes:
      - ./postgres_data2:/var/lib/postgresql/data
    networks:
      - postgres
  pgadmin:
    image: dpage/pgadmin4
    environment:
      - [email protected]
      - PGADMIN_DEFAULT_PASSWORD=root
    ports:
      - "5050:80"
    networks:
      - postgres
networks:
  postgres:
    driver: bridge

en mi app.module.ts

const client = new Client({
	user: 'root',
	host:'localhost',
  password: '123456',
  database: 'my_db',
	port: 5432,
});

👏