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

196
Visualizações
¿Cómo puedo configurar mi punto final de Express API para devolver respuestas dinámicas basadas en los parámetros de URL?

Estoy trabajando en un proyecto de administración reactiva que implica una conexión a un servidor express a través de un proveedor de datos.

No he podido hacer funcionar la ordenación o la paginación, y entiendo que tengo que hacer cambios en mis respuestas rápidas de la API para que estas funciones funcionen.

Escribí el código a continuación para detectar qué está enviando el parámetro de clasificación, con la esperanza de poder tener una respuesta API diferente según la URL de clasificación.

Me ha costado mucho conseguir que funcionen las funciones de ordenación y paginación. ¡Por favor ayuda si puedes! TY

 usersRouter.get("/", addRAHeader, checkJwt, async (req, res) => { const user_id = req.query.sort console.log(user_id) if(req.query.sort === ["id","ASC"]) { try { connection.execute( // getUsers, getUsersASC, function(err, users, fields) { console.log("USERSDESC") res.status(200).json(users) } ) } catch (err) { res.json({message:err}); } } else if(req.query.sort === ["email","ASC"]) { try { connection.execute( // getUsers, getUsersASC, function(err, users, fields) { console.log("USERSASC") res.status(200).json(users) } ) } catch (err) { res.json({message:err}); } } else { try { connection.execute( // getUsers, getUsersASC, function(err, users, fields) { console.log("USERSELSE") res.status(200).json(users) } ) } catch (err) { res.json({message:err}); } } });```
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Para empezar, puede almacenar dos vars en una clasificación de variable de consulta única. Puede diseñar sus queryParams Like /?sortBy=id&sortOrder=DESC

Su código expreso podría verse así

 usersRouter.get("/", addRAHeader, checkJwt, async (req, res) => { const user_id = req.query.sort const sortBy = req.query.sortBy const sortOrder = req.query.sortOrder //if(req.query.sort === ["id","ASC"]) { if(sortBy === "id" && sortOrder === "ASC") try { connection.execute( // getUsers, getUsersASC, function(err, users, fields) { console.log("USERSDESC") res.status(200).json(users) } ) } catch (err) { res.json({message:err}); } } // else if(req.query.sort === ["email","ASC"]) { else if(sortBy === "email" && sortOrder === "ASC") { try { connection.execute( // getUsers, getUsersASC, function(err, users, fields) { console.log("USERSASC") res.status(200).json(users) } ) } catch (err) { res.json({message:err}); } } else { try { connection.execute( // getUsers, getUsersASC, function(err, users, fields) { console.log("USERSELSE") res.status(200).json(users) } ) } catch (err) { res.json({message:err}); } } });
about 4 years ago · Juan Pablo Isaza Relatório

0

Pude resolver este problema. Conceptualmente, lo que me faltaba es que react-admin use la clasificación y paginación del servidor.

Una vez que me di cuenta de eso, simplemente escribí un código en mi punto final de API express que pudo recibir correctamente los parámetros de clasificación y filtrado en la consulta de URL, y luego usé una función de creación de consultas para crear una consulta MySQL personalizada que reflejaba esos parámetros.

 usersRouter.get("/", addRAHeader, checkJwt, async (req, res) => { setTimeout(() => { const { sort, range, filter } = req.query if (filter || range || sort !== undefined) { parsedFilter = JSON.parse(filter).q parsedRange = JSON.parse(range) lowerRange = parsedRange[0] upperRange = parsedRange[1] + 1 parsedSort = JSON.parse(sort) querySQL(queryBuilder(`${parsedSort[0]} ${parsedSort[1]}`, `${parsedRange[0]},${(upperRange - lowerRange)}`, parsedFilter), res) } else { querySQL(getUsers, res) } }, 1000) }); function queryBuilder (orderByParam, limit=10, filter='') { const query = `SELECT * FROM users Where email like '%${filter}' ORDER BY ${orderByParam} LIMIT ${limit};` // console.log("QueryBuilt:", query) return query } let querySQL = (query, res) => { try { connection.execute( query, function(err, users, fields) { res.status(200).json(users) } ) } catch (err) { res.json({message:err}); } }

Una combinación de estas funciones anteriores resolvió el problema para mí.

about 4 years ago · Juan Pablo Isaza 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