Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

358
Visualizações
¿Cómo manejar el filtrado de resultados en un punto final de API REST?

Tengo una API REST de Node.js, que funciona directamente con una base de datos MySQL a través node-mysql .

Estoy buscando una manera de filtrar los resultados de la base de datos en un punto final de la manera más eficaz.

Actualmente, tengo un punto final /api/v2/matches , donde mi código API consulta la base de datos y genera los resultados como una respuesta JSON.

Estoy planeando usar filtros en este punto final. por ejemplo /api/v2/matches?filter[team]=TeamId

¿Cuál es la mejor manera/la forma más eficaz de filtrar los resultados de la base de datos en mi código?

Debería:

  • Consulte la base de datos para todo y use Array.prototype.filter() o similar en mi matriz de resultados para filtrar los datos correctamente.

  • Reúna mi cadena de consulta programáticamente, dependiendo de lo que se pase en el objeto req.query.filters y consulte la base de datos.

Tenga en cuenta que mi consulta actual para este punto final (la que devuelve todos los resultados) tiene algunas INNER JOINS en curso. También estoy usando LIMIT 50 en esta consulta.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

El tiempo de acceso al disco y la transferencia de datos son los principales cuellos de botella aquí. Sin embargo, el LIMIT 50 tiene una implicación interesante en esto. Debe usar los filtros en la consulta de base de datos, ya que limitará la cantidad de tiempo que la base de datos dedica a buscar y también limitará la cantidad de datos transferidos si su base de datos es remota (si su base de datos no es remota, las ganancias serán menores pero aún allí). La ligera sobrecarga en la que se incurre al crear la consulta es insignificante en comparación con esto.

Las consultas SELECT * ciertamente están diseñadas para la velocidad, pero su DBMS tendrá que cubrir todo el conjunto de datos. Puede obtener un mejor tiempo de ejecución con SELECT WHERE , especialmente si proporciona los índices apropiados en su esquema de base de datos, ya que está limitado a 50 resultados, incluso con JOIN.

Además, tenga en cuenta que las consultas SELECT WHERE tienen años y años de investigación detrás de ellas y trucos para acelerarlas, mientras que Array.prototype.filter es probablemente una implementación muy simple de "if (lambda(x)) arr.append(x )" o algo así. Hay una buena razón por la que casi todas las empresas lo usan en lugar de filter .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda