Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

99
Vistas
La mejor práctica de filtrado dinámico de API REST

Nuestro equipo está desarrollando una API de back-end usando Node.JS, TypeScript y TypeORM (Oracle), somos relativamente nuevos en el uso de esta pila y tenemos algunas dudas sobre las mejores prácticas para filtrar dinámicamente una gran cantidad de datos.

Considerando una tabla con 20 registros, podemos llevar toda la información a la interfaz y filtrar directamente en el navegador, pero considerando una tabla con 1 millón de registros, supongo que necesitará una función de paginación y el usuario no podrá filtrar directamente en la interfaz

La forma en que trato de resolver este problema es crear un objeto con todos los filtros generados por el usuario y enviarlo a pedido del cuerpo a la API, procesando la información y devolviendo los datos filtrados.

Teniendo en cuenta que estoy usando TypeORM queryBuilder, creé la siguiente función para implementar esta lógica:

 interface IFilters { entity: string; key: string; value: string; type: string; }
 function filterQueryBuilder( query: SelectQueryBuilder<any>, filters: IFilters[] ): SelectQueryBuilder<any> { if (filters.length === 0) { return query; } filters.forEach((filter) => { if (filter.type === "in") { query.andWhere(`${filter.entity}.${filter.key} IN (:...values)`, { values: filter.value, }); } if (filter.type === "like") { query.andWhere(`${filter.entity}.${filter.key} LIKE :value`, { value: `%${filter.value}%`, }); } if (filter.type === "equal") { query.andWhere(`${filter.entity}.${filter.key} = :value`, { value: filter.value, }); } }); return query; }

Funciona, pero se ve un poco sucio y la interfaz deberá indicar la entidad, así que creo que esa no es la forma correcta.

¿Puede alguien indicarme una mejor manera de hacerlo? O un artículo con una mejor solución, no es necesario que esté en TypeORM.

Gracias por adelantado

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda