Filtrado de Precios con Rango Usando Between en Time Wareham
Clase 28 de 36 • Curso de NestJS: Persistencia de Datos con TypeORM
Contenido del curso
- 3
Instalación de Docker en Windows, macOS y Ubuntu
01:35 - 4

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

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

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

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

Conexión a Bases de Datos con Variables de Entorno en Node.js
13:49
- 9

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Serialización y Transformación de Datos en APIs con ClassTransformer
16:55
¿Cómo filtrar precios por rango utilizando TypeORM?
Filtrar datos por rangos es una práctica común y esencial en el desarrollo de aplicaciones que manejan grandes volúmenes de datos. En este contexto, aprenderemos a utilizar TypeORM para filtrar precios dentro de un rango específico. Esto se logra con el uso de la cláusula BETWEEN, una herramienta poderosa para obtener los resultados deseados de manera eficiente y precisa.
¿Cómo configurar el DTO para los filtros de precios?
La configuración del DTO (Objeto de Transferencia de Datos) es el primer paso para recibir y validar correctamente los parámetros de entrada. En este caso, configuraremos dos parámetros opcionales: MINPRICE y MAXPRICE. Aquí te explicamos cómo:
- Definición de parámetros: Se agregan
MINPRICEyMAXPRICEcomo parámetros opcionales con la cláusulaisPositive()para asegurar que los valores sean positivos. - Validación condicional: Utilizamos el decorador
VALIDATEIFdeClassValidatorpara asegurar que si se proporcionaMINPRICE,MAXPRICEtambién debe estar presente, garantizando que siempre se tenga un rango completo.
@IsOptional()
@IsPositive()
minPrice: number;
@ValidateIf(o => o.minPrice !== undefined)
@IsPositive()
maxPrice: number;
¿Cómo implementar el filtro con TypeORM?
Al establecer filtros en consultas, es fundamental hacerlo de manera dinámica para permitir flexibilidad en las búsquedas. Aquí te mostramos cómo:
-
Importar y configurar Between: Primero importamos el método
Betweende TypeORM, que nos facilita establecer las condiciones de búsqueda por rango. -
Crear condiciones dinámicas: Se inicia con una condición
WHEREvacía que se llenará dinámicamente dependiendo de los filtros recibidos. Esto no solo te permitirá buscar por precio, sino que mantendrá el código limpio y escalable para futuras extensiones, como filtrar por marca o categoría.
import { Between, FindConditions } from 'typeorm';
// Crear un objeto WHERE inicialmente vacío
let where: FindConditions<Product> = {};
// Si existen MINPRICE y MAXPRICE, agregar la condición WHERE
if (minPrice !== undefined && maxPrice !== undefined) {
where.price = Between(minPrice, maxPrice);
}
// Ejecutar query usando el objeto WHERE
¿Cómo verificar la funcionalidad y debuggear?
Verificar que todo funcione como debería es crucial. Usando una herramienta como Insomnia para simular solicitudes HTTP, podrás asegurar que tu API responde correctamente a los parámetros de entrada.
-
Verificación de parámetros: A través de pruebas de solicitudes, puedes verificar que al ingresar un
MINPRICE, se exige unMAXPRICEantes de proceder. Además, la validación de positividad garantiza que no se permitan valores negativos o cero. -
Console.log para Depuración: Añadir un
console.logpara mostrar los valores deMINPRICEyMAXPRICEte ayudará a monitorizar las solicitudes en tiempo real y asegurar que los parámetros se reciben como se esperaba.
Consejos finales
- Explora la documentación de TypeORM para descubrir más opciones avanzadas de query.
- Mantén siempre tus condiciones tipadas para evitar errores a largo plazo.
- Utiliza
console.logcon moderación y sólo en etapas de depuración para mantener un output limpio en producción.
¡Ahora tienes las herramientas para implementar filtros de precios por rango eficientemente con TypeORM! Sigue explorando y profundizando en herramientas similares para seguir mejorando tus habilidades de desarrollo.