Saltar al contenido

Lección 7 de 12 · Lectura y práctica

Conectar a Postgres y hacer queries seguras

Postgres en APIs Conectar a DB es facil. Hacerlo seguro y estable es el trabajo. Aprende buenas practicas basicas. Conceptos clave Pool de conexiones Queries parametrizadas Timeouts y retries (idea) Ejemplo Regla: nunca.

Del concepto a la práctica

Taller de esta lección

Una consulta parametrizada mantiene separados el código SQL y los valores recibidos. El pool reutiliza conexiones, pero cada operación debe liberar recursos mediante la interfaz de la biblioteca elegida; no concatena identificadores ni texto del usuario.

Ejemplo resuelto

js
const result = await pool.query(
  'SELECT id, title FROM courses WHERE id = $1',
  [req.params.id]
);

Para id = 7, Postgres recibe la consulta y el valor como elementos distintos. Una entrada como 7 OR 1=1 no se convierte en SQL ejecutable por concatenación.

Fixture reproducible: (id7,Node,basic), (id8,SQL,advanced), (id9,HTML,basic). La consulta SELECT id,title FROM courses WHERE level=$1 ORDER BY id con ["basic"] devuelve7 y9. En una tabla id entero, 7 OR1=1 es un valor inválido y se rechaza antes de consultar; parametrizar evita inyección, sin convertirlo en un ID válido. pool.query libera su conexión automáticamente; con pool.connect usa client.release() en finally. Una transacción requiere el mismo client para BEGIN/COMMIT/ROLLBACK.

Pruébalo

  1. Define una tabla local con tres cursos identificados.

  2. Ejecuta el SELECT con un parámetro numérico.

  3. Prueba un valor inválido y registra la respuesta de validación antes de consultar.

Error frecuente: usar ... WHERE id = ${id}. Corrige con $1 y un array de parámetros, además de validar el tipo esperado.

Ejercicio: consulta los cursos cuyo nivel sea basic usando $1.

Comprueba tu resultado

solo aparecen los registros con ese nivel; entrega los tres registros iniciales y la salida para comprobar el filtro.

Navegador, API y base de datos conectados por solicitudes, consultas y respuestas en sentidos opuestos.
CursaloMapa de práctica
Del navegador a los datos

El navegador envía una solicitud a la API. El servidor valida la operación y consulta los datos; después devuelve una respuesta que el navegador puede mostrar. La base de datos se comunica con el servidor y no directamente con el navegador.

Ver la infografía en tamaño completo ↗

Postgres en APIs

Conectar a DB es facil. Hacerlo seguro y estable es el trabajo. Aprende buenas practicas basicas.

Conceptos clave

  • Pool de conexiones
  • Queries parametrizadas
  • Timeouts y retries (idea)

Ejemplo

Regla: nunca concatenes strings para queries. Usa parametros.

Ejercicio

  • Implementa un SELECT parametrizado por id.
  • Define un timeout por request.

Checklist de mastery

  • Evito SQL injection.
  • Entiendo pool vs conexion unica.

Sigue con Node.js y APIs con Express

Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.

Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.