Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

96
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!